我使用rails形成帮助器来构建表单,该表单中的输入元素具有id属性,因此它们可以与其标签匹配。问题是这个id类似于person_first_name
而不是person_first_name_#{person.id}
,这意味着如果我在同一页面上有多个相同类型的表单,则可能会发生意外情况。
一个完美的例子是使用jquery-ui datepicker。我有一系列的表单都包含一个text_field元素,包含在一个带有类datepicker的div中。我像这样应用datepicker(在文档就绪)$('.datepicker input').datepicker(options)
并猜测这些元素中的每一个,虽然有一个看似有效的日期选择器(点击输入,出现了datepicker),尽管在任何一个中选择了一个日期这些日期选择器只有页面上的第一个元素(该元素类型,例如输入id = published_on)会更新值。
有关获取rails以输出更多唯一元素id或使datepicker不使用id属性的任何建议吗?
答案 0 :(得分:0)
您可以轻松自定义输入的ID。
text_field(:person, :first_name, :id => "person_first_name_#{person.id}")
答案 1 :(得分:0)
有人会认为,如果您将表单的ID设置为:id => “edit_person _#{person.id}”此ID将向下级联到标签和字段逻辑中。从我所看到的,添加雄辩的自定义解决方案的过程中有太多的自动魔术。
答案 2 :(得分:0)
# Haml
= form_for @model do |f|
.field
= f.label :field_name
= f.text_field :field_name
使用上面的示例时,会按预期呈现ID。