2014-11-08 6 views
0

Я создаю сайт электронной торговли с рельсами. Я могу искать продукты по названию с формой поиска, но как я могу ссылаться на страницу, которая выводит все продукты с определенным названием или категорией?Создание страницы продуктов Rails

Это код в моих продуктах контроллеров:

def index 
    @products = Product.scoped 
    @products = @products.where('title like ?', "%#{params[:search]}%") if params[:search] 
    @products 
end 

и мои контроллеры магазин имеет это:

def index  
    if params[:search]  
    @products = Product.search(params[:search]).title 
    else  
    @products= Product.all  
    end  
end 
+0

показать код .. – Surya

ответ

0

Чтобы создать ссылку, которая показывает продукты с some категории использования в целях:

<%= link_to 'Some', products_path(cat: :some) %> 

Вам необходимо сменить контроллер на:

@products = @products.where('title like ?', "%#{params[:search]}%") if params[:search] 
@products = @products.where('category like ?', "%#{params[:cat]}%") if params[:cat] 

Я принимаю слишком много вещей.

0

Если вы хотите отфильтровать свои продукты на основе названия или категории, то, как вы это делаете, во многом зависит от того, как ваша фильтрация настроена в представлении. Если вы используете поле выбора с конкретными названиями, которые вы хотите фильтровать, он будет выглядеть следующим образом, на ваш взгляд (в виде тега):

<select name='title_filter'> 
    <option value="title_1">Title 1</option> 
    <option value="title_2">Title 2</option> 
</select> 

Теперь, когда пользователь отправляет форму отобрав титул , ключ «title_filter» будет добавлен в ваш хеш params со значением, которое пользователь выбрал. Вы можете использовать те же действия контроллера вы указали, но только что это проверить для нового ключа:

if params[:title_filter] 
    @products = @products.where('title= ?', params[:title_filter]) 
else 
    # fallback if no title is selected 
end 

В качестве альтернативы, вы можете использовать link_to при фильтрации ссылки:

<%= link_to 'My Title', products_path(title: :my_title) %> 

Кроме того, то, как вы используете свой пункт where, опасно. См. Active Record guide

0

В результате я использовал это на мой взгляд. Почему-то другие ответы не работали для меня: <% = link_to "Tables", products_path (поиск: 'dining')%>

Смежные вопросы