Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails在多个(数组)复选框标记时如何获取标签标记_Ruby On Rails_Forms_Label - Fatal编程技术网

Ruby on rails rails在多个(数组)复选框标记时如何获取标签标记

Ruby on rails rails在多个(数组)复选框标记时如何获取标签标记,ruby-on-rails,forms,label,Ruby On Rails,Forms,Label,My 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_

My 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中的复选框正确提交为params[:fruits]=>['apple','banana']

但是标签被破坏了-点击标签什么也不做。(因为html标签标记为for='fruits\u xxxx',但所有复选框的ID都是ID='fruits\uxxxx',所以标签与复选框不关联。)

如何指定标签标签,使其与复选框标签正确关联?(我还尝试使用:value作为标签标签,例如
=label_标签'fruits[],我喜欢苹果',:value=>'apple'
,但这也不起作用)

注意:我最接近的方法是对标签标签使用块格式(将复选框放在标签中),就像下面的标签一样。但是,使用块结构可以防止将复选框和标签放在单独的单元格中:

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

您可以将checkbox属性作为第四个参数传递给checkbox标记方法。在这种情况下,需要将id设置为标签的“for”属性

%td
  = check_box_tag 'fruits[]', 'apple', params[:fruits] && params[:fruits].include?('apple'), :id => 'fruits_apple'
%td
  = label_tag 'fruits_apple', 'I like Apples'

如果有人通过谷歌搜索到这里,如果您使用的是
表单,那么这里是一个更正确的答案:

%td
  = f.check_box :fruits, { multiple: true }, 'apple'
%td
  = f.label :fruits, 'I like Apples', value: 'apple'

对于那些在Rails 6上并在这里结束的人:

<% fruits.each_with_index do |fruit, idx| %>
  <%= f.check_box :fruits, {multiple: true, id: "fruit_#{idx}"}, fruit %>
  <%= f.label fruit, for: "fruit_#{idx}" %>
<% end %>