我有点困惑。 尽管这里有关于这个主题的所有问题,但我找不到合适的解决方案。
我想要做的只是在我的索引过滤器表单中添加复选框。
我正在使用Metasearch gem,这是我目前的代码:
<form class="filter_form">
<%= form_for @search do |f| %>
<%= f.collection_select :categories_id_equals, Category.all, :id, :name, :include_blank => true, :prompt => "All categories" %>
<%= f.collection_select :location_id_equals, Location.all, :id, :name, :include_blank => true, :prompt => "All locations" %>
<ul>
<b> Type </b>
<% Type.all.each do |type|%>
<li>
<%= check_box_tag :types_id_equals, type.id %>
<%=h type.name %>
</li>
<% end %>
</ul>
<%= submit_tag "Find Now", :class => "find" %>
<% end %>
除了复选框外,一切正常。
我对rails没有太多经验,所以我真的没有看到我做错了什么,以及什么是最方便和最简单的方法。
更新 .....................
更多解释 - 我有一个模型Trips,它与两个模型有HABTM关系( 类别,类型)并且属于位置。
我希望能够按类别(f.collection select),位置(f.collection select)和类型(复选框)过滤Trips on the index。
检查类型并提交后 - 没有任何更改,也没有进行过滤!
答案 0 :(得分:0)
<%= check_box_tag "type_ids[]", type.id %>
会为你做的。选定的id将被转换为由commatas分隔的字符串。您可以在params[:type_ids]
中找到它们,但您必须手动处理它们! Rails不是一个魔术师,它是一个框架。
答案 1 :(得分:0)
以下是我处理它的方式。
<% @sub_categories.each do |cat| %>
<h2><%= cat.name %> <%= check_box_tag "q[product_category_id_in][]", cat.id %></h2>
<% end %>
基本上只要q是你的查询参数,然后就在meta_search方法的括号sub之后。我使用了whatever_foreign_key_in因为我希望能够在数组中添加多个id来搜索。然后在它之后添加空括号,以便rails正确处理post params。