2012-06-07 2 views
2

У меня есть список фильмов, а также их рейтинги. В верхней части моей страницы у меня есть форма, которая дает список флажков, которые показывают каждый доступный рейтинг (G, PG-13 и т. Д.). Как только пользователь нажимает флажок (ы) и показывается, я просто хочу, чтобы выбранные фильмы отображались.Фильтрация списка с использованием флажков

В моем методе индекса у меня есть переменная экземпляра, называемая @filtered_ratings, которая собирает ключи из проверенных фильмов. Моя идея состояла в том, чтобы изменить @movies в моем контроллере, используя метод find и сопоставляя ключи от @filtered_ratings к списку фильмов. Однако, я думаю, что я делал это неправильно, так как не могу заставить его работать. Я пробовал несколько способов, таких как @movies=Movie.find(params[:id] = @filtered_ratings), но я знаю, что это неверно. Какие-либо предложения?

ответ

6

Если предположить, что форма чекбокс что-то вроде:

<%= form_tag method: (blah), url: (blah) do %> 
    <%= check_box_tag 'ratings[]', "R" %> 
    <%= check_box_tag 'ratings[]', "PG" %> 
    <%= check_box_tag 'ratings[]', "PG-13" %> 
    <%= submit_tag 'Submit' %> 
<% end %> 

вы получите PARAMS [: рейтинги] = [ "R", "PG"], если сказать, что первые две коробки были проверены. Итак, в контроллере вы можете просто сделать

Movie.where("rating IN (?)", params[:ratings]) 

. Это предполагает, что ваши фильмы имеют атрибут «рейтинг».

+0

Ваше предположение верно; однако я просто использую блок для генерации всего. Кроме того, когда я изменил свой контроллер на ваш предложенный код, он полностью удаляет список фильмов. Наконец, нам прямо сказали, что «найти» будет самым простым способом сделать это. – Anconia

+0

Если вам нужно использовать «find», вместо этого вы можете использовать Movie.find (: all, conditions: ["rating IN (?)", Params [: ratings]]), но это приводит к тому же SQL-запросу. Если этот код удаляет список фильмов, параметры [: рейтинги], вероятно, либо ноль, либо пустые. Какие значения вы видите в хеше params? – cdesrosiers

+0

В верхней части моей индексной страницы я положил '= params [: ratings] .keys', а отображаемые значения были значениями отмеченных. Поэтому я уверен, что параметр hash не пуст. – Anconia

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