check_box_tag with label_tag click action

Dud*_*udo 16 ruby-on-rails form-helpers ruby-on-rails-3

<%= f.label :category %><br/>
<%= check_box_tag 'category[]', '1', false %>
<%= label_tag 'community', 'community', class: 'category_select', value: '1' %>
<%= check_box_tag 'category[]', '2', false %>
<%= label_tag 'food', 'food', class: 'category_select', value: '2' %>
<%= check_box_tag 'category[]', '3', false %>
<%= label_tag 'music', 'music', class: 'category_select', value: '3' %><br/>
<%= check_box_tag 'category[]', '4', false %>
<%= label_tag 'education', 'education', class: 'category_select', value: '4' %>
<%= check_box_tag 'category[]', '5', false %>
<%= label_tag 'theatre', 'theatre', class: 'category_select', value: '5' %>
<%= check_box_tag 'category[]', '6', false %>
<%= label_tag 'art', 'art', class: 'category_select', value: '6' %><br/>
<%= check_box_tag 'category[]', '7', false %>
<%= label_tag 'culture', 'culture', class: 'category_select', value: '7' %>
<%= check_box_tag 'category[]', '8', false %>
<%= label_tag 'family', 'family', class: 'category_select', value: '8' %>
<%= check_box_tag 'category[]', '9', false %>
<%= label_tag 'sports', 'sports', class: 'category_select', value: '9' %><br/>
Run Code Online (Sandbox Code Playgroud)

我希望能够将这些选项显示在我的控制器下的category数组中,所以我命名了所有选项category[].我想完成什么,对于label_tagcheck_box_tag领域了解对方:

<%= check_box_tag 'community', 'community', false %>
<%= label_tag 'community', 'community', class: 'category_select' %>
Run Code Online (Sandbox Code Playgroud)

在这里,如果我点击这些单词,该框也会被选中.我尝试用上面的值来完成这个label_tag,但它似乎不起作用.这可以实现吗?

Zai*_*uch 28

一种方法是label手动添加元素(否erb),并添加复选框并将内容标记为子项:

<label class="category-select">
  <%= check_box_tag 'category[]', '1', false %>
  Community
</label>
...
Run Code Online (Sandbox Code Playgroud)

虽然这确实会改变html的结构,但可能会对你的layout/css产生影响.


Bon*_*ngs 6

好的,我很晚才回答这个问题.我正在寻找同样问题的解决方案,并提出以下建议:

<%= label_tag "some_name", raw("#{check_box_tag('some_name')} Click label to check") %>
Run Code Online (Sandbox Code Playgroud)

这将创建html如下:

<label for="some_name"><input id="some_name" name="some_name" type="checkbox" value="1"> Click label to check</label>
Run Code Online (Sandbox Code Playgroud)


Nat*_*teW 6

您还可以label_tag在标签标签内传递一个块,然后选中一个复选框(以及您想要的任何其他内容).

<%= label_tag do %>
  <%= check_box_tag 'category[]', '1', false %>
  Community
<% end %>
Run Code Online (Sandbox Code Playgroud)

相关文档:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-label_tag