使用复选框过滤列表

Anc*_*nia 2 ruby checkbox ruby-on-rails find

我有一个电影列表以及他们的评级.在我的页面顶部,我有一个表单,其中列出了显示每个可用评级(G,PG-13等)的复选框.一旦用户点击复选框并点击提交,我只想显示所选的电影.

在我的索引方法中,我有一个名为的实例变量@filtered_ratings,它从已检查的电影中收集密钥.我的想法是@movies使用find方法在我的控制器中进行更改,并将键与@filtered_ratings电影列表进行匹配.但是,我认为我一直在做错,因为我无法让它发挥作用.我尝试了几种方法,@movies=Movie.find(params[:id] = @filtered_ratings)但我知道这是不正确的.有什么建议?

cde*_*ers 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 %>
Run Code Online (Sandbox Code Playgroud)

你会得到params [:ratings] = ["R","PG"]如果说前两个盒子被检查了.所以,在控制器中你可以做到

Movie.where("rating IN (?)", params[:ratings])
Run Code Online (Sandbox Code Playgroud)

.这假设您的电影具有"评级"属性.