我有一系列电影以及他们的评分。在我的页面顶部,我有一个表单,其中列出了显示每个可用评级(G,PG-13等)的复选框。一旦用户点击复选框并点击提交,我只想显示所选的电影。
在我的索引方法中,我有一个名为@filtered_ratings
的实例变量,用于从已检查的电影中收集密钥。我的想法是使用find方法更改控制器中的@movies
,并将@filtered_ratings
中的键与电影列表相匹配。但是,我认为我一直在做错,因为我无法让它发挥作用。我尝试了几种方法,例如@movies=Movie.find(params[:id] = @filtered_ratings)
,但我知道这是不正确的。有什么建议吗?
答案 0 :(得分: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 [:ratings] = [“R”,“PG”]。所以,在控制器中你可以做到
Movie.where("rating IN (?)", params[:ratings])
。这假设您的电影具有“评级”属性。