Rails fields_for生成一个损坏的<label for =“”>值

时间:2018-03-27 20:15:48

标签: ruby-on-rails ruby-on-rails-4 redmine

说明错误的代码来自Redmine插件。 _form.html.erb部分包含此fields_for

<%= f.fields_for :information do |information| %>
  <p><%= information.text_field :middlename, :label => l(:label_people_middlename) %></p>
  <p><%= f.text_field :lastname, :required => true %></p>

然后其中一个字段声明了一个标签:

<p><%= information.select :gender, Person.get_genders, :label => l(:label_people_gender)%></p>

生成此HTML:

<p><label for="person[information_attributes]_gender">Gender</label>
  <select name="person[information_attributes][gender]" id="person_information_attributes_gender">
  <option selected="selected" value="0">Male</option>
  <option value="1">Female</option>
</select></p>

<label for="">值中包含[]而不是下划线_,因此它与目标字段的id="person_information_attributes_gender"不匹配。单击标签不会将键盘焦点置于<select>字段中。

这是Rails 4.2.8中的已知错误吗?是否有可用的修复或解决方法 - 除了在原始HTML中编写<label>

1 个答案:

答案 0 :(得分:0)

如果您尝试使用实际的Rails标签,而不是将标签作为选项传递给“选择”,会发生什么? (老实说,我之前没有看到label这样的选项上的<p> <%= information.label :gender, l(:label_people_gender) %> <%= information.select :gender, Person.get_genders %> </p> 选项。像这样:

class