【问题标题】:Rails metasearch search_form with checkboxes带有复选框的 Rails 元搜索 search_form
【发布时间】:2012-01-29 01:20:22
【问题描述】:

我有点困惑。 尽管这里有关于这个主题的所有问题,但我找不到正确的解决方案。

我想要做的只是将复选框添加到我的索引过滤器表单中。

我正在使用 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 选择)、位置(f.collection 选择)和类型(复选框)过滤其索引上的旅行。

检查类型并提交后 - 没有任何变化,没有进行过滤!

【问题讨论】:

  • 哪种方式不工作?不出现?你有例外吗?您可以检查它们,但在params hash 中只传输了一个被检查的id?
  • 没有任何变化,复选框没有过滤结果。但是从 更改为 后,只传输了一个 id。

标签: ruby-on-rails search filter checkbox meta-search


【解决方案1】:

我是这样处理的。

<% @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 参数。

【讨论】:

    【解决方案2】:
    <%= check_box_tag "type_ids[]", type.id %>
    

    会为你做的。选定的 id 将作为逗号分隔的字符串传输。您可以在params[:type_ids] 中找到它们,但您必须手动处理它们! Rails 不是魔术师,它是一个框架。

    【讨论】:

    • 还是不行。但是你能解释一下 - 你所说的必须手动处理是什么意思?就像我说的我还是个新手:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多