2010-12-29 12 views
3

今すぐチェックボックスをオンにすると、レールチェックボックスのみがトグルされます。チェックボックスに関連付けられたテキストをクリックしても何も起こりません。テキストをクリックすると、チェックボックスをトグルする方法はありますか?レールチェックボックス選択可能エリア

<% @books.each do |b| %> 
    <%= check_box_tag "books[]", b.book %><%= b.book %><br /> 
<% end %> 

答えて

10

これは、チェックボックスのコレクションを操作するのに必要な[]が原因で難解でした。ただ、次の操作を行います。

ビュー:

<% @books.each do |b| %> 
    <%= check_box_tag "books[#{b.id}]", b.book %> 
    <%= label_tag "books[#{b.id}]", b.book %> 
    <br /> 
<% end %> 

そして、それによってパラメータが valuesのコントローラーへのアクセスインチそうでなければ、135 => Book1のように見えます。 [:ブック]

を.valuesまたはでも簡単な方法は、単純にそうような<label>でをラップすることです:

... 
<label><%= check_box_tag "books[]", b.book %></label> 
... 
だけBOOK1

のparamsを取得するにはvaluesを使用して、

今すぐ#{b.id}で一意のIDについて心配する必要がないので、コントローラコードを

01に戻すことができます
params[:books] # notice the .values is removed 
4

チェックボックスのIDを指すlabel tagにテキストを配置する必要があります。 Railsにはlabelヘルパーがあります。

+0

チェックボックスIDが 'books_'のときにラベルタグを使用するにはどうすればよいですか? – Lan

+0

チェックボックスには、これが機能し、コードが有効であるために、一意のIDが必要です。モデルから外したり、ネストされた属性を使用したりしていないので、ラベルを参照するようにラベルを設定できるように、各チェックボックスのIDを設定する必要があります。 – idlefingers

関連する問題