check_box_tag with label_tag click action

时间:2013-04-18 23:59:56

标签: ruby-on-rails ruby-on-rails-3 form-helpers

<%= 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上的值完成此操作,但它似乎不起作用。这可以实现吗?

3 个答案:

答案 0 :(得分:28)

执行此操作的一种方法是手动添加label元素(无erb),并添加复选框并将内容标记为子项:

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

虽然这确实会稍微改变html的结构,但可能会对你的布局/ css产生影响。

答案 1 :(得分:6)

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

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

答案 2 :(得分:6)

您还可以将一个块传递给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