web-dev-qa-db-ja.com

label_tagクリックアクションを使用したcheck_box_tag

<%= 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_tagフィールドとcheck_box_tagフィールドがお互いについて知ることです。

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

ここで、単語をクリックすると、ボックスもチェックされます。 label_tagの値を使用してこれを達成しようとしましたが、機能していないようです。これは達成できますか?

18
Dudo

これを行う1つの方法は、手動でlabel要素を追加し(erbなし)、チェックボックスを追加し、コンテンツに子としてラベルを付けることです。

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

それはhtmlの構造をいくらか変更しますが、レイアウト/ cssに影響を与える可能性があります。

28
Zaid Crouch

ブロックを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

6
NateW

わかりました、私はこれに答えるのにかなり遅れています。私は同じ種類の問題の解決策を探していて、次のことを思いつきました:

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