Поиск по содержимому поля - Ruby on Rails - PullRequest
0 голосов
/ 21 февраля 2012

Итак, я создаю приложение ruby ​​on rails и, на мой взгляд, у меня есть список link_to, каждый из которых представляет собой отдельную консоль

В моей таблице базы данных есть поле с именем console.

Что я хочу сделать - это когда пользователь нажимает на ссылку, например, Playstation 3 вернет все записи, в которых Playstation 3 указан в столбце таблицы.

Мне было интересно, как бы я поступил так, я пытался искать в Интернете, но не нашел ничего подобного.

Это проект, который мне не нужно долго завершать. Я пытался понять, что я хотел бы указать в ссылке на вид, и что я бы добавил в games_controller.

Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 21 февраля 2012

Основная суть в том, чтобы иметь действие контроллера, которое будет возвращать список игр, отфильтрованных по консоли. Например,

# GamesController.rb
def index
   @games = Game.find_by_console(params[:console])
end

Затем вы можете создать ссылку для любой конкретной консоли как таковую:

link_to 'XBOX', games_path(:console => 'XBOX')

Это должно привести к GET запросу на URL /games?console=XBOX

Если у вас есть предопределенный набор консолей, вы можете попытаться превратить их в константы внутри модуля Consoles, чтобы избежать необходимости везде их жестко кодировать.

ОБНОВЛЕНИЕ:

Поскольку вы пытаетесь реализовать поиск и фильтрацию в одной и той же цепочке, вам необходимо убедиться, что find_by_console не вызывается, если его нет.

# GamesController.rb
def index
   @games = Game.search(params[:search])
   @games = @games.find_by_console(params[:console]) unless params[:console].blank?
end
...