21
<%= 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/>

我希望能够让这些选项显示在我的控制器中的一个category数组下,所以我将所有选项命名为category[]。我想要完成的是让label_tagcheck_box_tag字段相互了解:

<%= check_box_tag 'community', 'community', false %>
<%= label_tag 'community', 'community', class: 'category_select' %>

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

4

3 回答 3

33

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

<label class="category-select">
  <%= check_box_tag 'category[]', '1', false %>
  Community
</label>
...

尽管这确实会在一定程度上改变 html 的结构,并且可能会对您的布局/css 产生影响。

于 2013-04-19T00:35:24.267 回答
13

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

<%= label_tag do %>
  <%= check_box_tag 'category[]', '1', false %>
  Community
<% end %>

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

于 2018-04-12T16:00:21.193 回答
7

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

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

这将创建 html 如下:

<label for="some_name"><input id="some_name" name="some_name" type="checkbox" value="1"> Click label to check</label>
于 2014-09-09T18:32:45.973 回答