我正在构建一个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 %>
答案 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>