Form_for,带有check_box的渲染列表

时间:2018-02-05 08:13:55

标签: ruby-on-rails ruby forms checkboxlist

我在标签上方有功能搜索。我想在form_for中使用check_box渲染所有标签,我将过滤这些标签并使用新参数再次渲染所有项目。

= form_for @tags do |f|
  - @tags.each do |tag|
    f.check_box(#{tag}, "yes")
    f.label_tag "#{tag}"
  f.submit 'Filter'
end

2 个答案:

答案 0 :(得分:1)

我不知道你在问什么,因为你的问题不太清楚,但试图理解你的问题。如果我理解了您的问题,那么您需要在搜索页面上添加带标签的过滤器,对吗?如果是,请尝试以下步骤。

为搜索标记创建表单,例如

<%= form_tag search_path, method: :get do %>
   <% for tag in Model.order("name") %> #=> Model means which stored your tags like "Tag"
       <%= check_box_tag("#{tag.name}[]", "#{tag.name}") %> tag.name
       OR
       <%= check_box_tag("tags[]", "#{tag.name}") %> tag.name
   <% end %>
   <%= submit_tag "Filter" %>
<% end %>

如果您需要单独过滤点击链接并保持当前搜索

   <% for tag in Model.order("name") %> #=> Model means which stored your tags like "Tag"
       <%= link_to tag.name, request.query_parameters.merge({tag: tag.name}) %>
   <% end %>

点击链接

,查看下图以保持当前搜索和过滤

enter image description here

这些都是视图功能,您需要更新SQL查询。

我认为这会有所帮助。

答案 1 :(得分:0)

它的工作:

= form_tag({controller: 'searches', action: 'filter'}, method: 'get') do
  ul
    - @tags.each do |tag|
      li
        input type='checkbox' name="tags[]" checked="checked" id="#{tag}" value="#{tag}"
        label_tag for="#{tag}" #{tag}
  button Filter