如何使ransack复选框过滤器的标签可单击

时间:2018-04-02 00:05:27

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ransack

我正在构建一个rails应用程序,我使用ransack进行搜索和过滤。在一个实例中,我使用ransack作为复选框过滤器。问题是,用户只能单击复选框才能使过滤工作。我想要的是用户也可以单击复选框标签,并应用相同的过滤器。这对于用户体验更好,因为总是必须单击复选框内部才是令人生畏的。这是ransack复选框过滤器的视图代码

<h4>Roles</h4>
<% new_roles = [] %>
<%= search_form_for @search, :class => 'filters_click' do |f| %>
  <% @jobs.each do |job| %>
    <% if job.role? %>
    <% new_roles << job.role %>
    <% end %>
  <% end %>

  <% new_roles.uniq.each do |new_role| %>
    <div class="styled-input-container">
      <%= check_box_tag('q[role_eq_any][]', new_role) %>
      <%= new_role %>
    </div>
  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:0)

大多数浏览器都支持此功能,单击标签也会选中该复选框。这不是Rails特有的东西,只是为了清楚。

他们这样做的方法是寻找目标

的标签
<% new_roles.uniq.each do |new_role| %>
  <div class="styled-input-container">
    <%= check_box_tag('q[role_eq_any][]', new_role) %>
    <%= label_tag dom_id(new_role), new_role %>
  </div>
<% end %>

dom_id助手应在id字段中生成与label#for id check_box匹配的instantiateItem <{1}} < / p>