代码之家  ›  专栏  ›  技术社区  ›  Vitaly Zalivan

Form\u for with render list of check\u框

  •  2
  • Vitaly Zalivan  · 技术社区  · 6 年前

    我有搜索以上标签的功能。我想在form\u中使用复选框呈现所有标记,因此我将过滤这些标记并使用新参数再次呈现所有项目。

    = form_for @tags do |f|
      - @tags.each do |tag|
        f.check_box(#{tag}, "yes")
        f.label_tag "#{tag}"
      f.submit 'Filter'
    end
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   fool-dev    6 年前

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

    为搜索标记创建表单,如

    <%= 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查询。

    我想这会有帮助的。

        2
  •  0
  •   Vitaly Zalivan    6 年前

    这是工作:

    = 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