4

私の Rails 3.2.13 アプリは、ラベル付きのチェックボックス配列 (同じフィールド名に対して複数の可能な値) を使用します。

%table
  %tr
    %td
      = check_box_tag 'fruits[]', 'apple'
    %td
      = label_tag 'fruits[apple]', 'I like Apples'
  %tr
    %td
      = check_box_tag 'fruits[]', 'banana'
    %td
      = label_tag 'fruits[banana]', 'I like Bananas'

フォームは params[:fruits] => ['apple', 'banana'] として params のチェックボックスを正しく送信します

しかし、ラベルが壊れています - ラベルをクリックしても何も起こりません。(html ラベル タグは for = 'fruits_xxxx' ですが、すべてのチェックボックスの ID は id = 'fruits_' であるため、ラベルはチェックボックスに関連付けられません。)

check_box_tag と正しく関連付けられるように label_tag を指定するにはどうすればよいですか? (ラベルタグに :value を使用してみました= label_tag 'fruits[]', I like Apples', :value => 'apple'が、それも機能しませんでした)

注:私が最も近いのは、ラベルのようにラベルタグにブロック形式を使用することです(ラベル内にチェックボックスを配置する)が機能しますが、ブロック構造を使用すると、チェックボックスとラベルを別々のセルに配置できなくなります:

= label_tag do
  = check_box_tag 'fruits[]', 'apple'
  I like Apples
= label_tag do
  = check_box_tag 'fruits[]', 'banana'
  I like Bananas
4

3 に答える 3

8

チェックボックスの属性を check_box_tag メソッドに 4 番目の引数として渡すことができます。この場合、ラベルの「for」属性と同じ id を設定する必要があります。

%td
  = check_box_tag 'fruits[]', 'apple', params[:fruits] && params[:fruits].include?('apple'), :id => 'fruits_apple'
%td
  = label_tag 'fruits_apple', 'I like Apples'
于 2013-06-02T20:08:09.287 に答える