我对我当前的项目有一个看法,它执行以下操作(在 haml 中):
-@horses.each do |horse|
= render :partial => 'main/votingbox', :locals => {:horse => horse}
在 _votingbox.html.haml 文件中,我有以下内容:
%div.votingbox
%span.name= horse.name
%div.genders
- if horse.male
%img{:src => 'images/male.png', :alt => 'Male'}
- if horse.female
%img{:src => 'images/female.png', :alt => 'Female'}
%div.voting_form
= form_for(Vote.new, {:url => horse_vote_path(horse)}) do |f|
= f.label :comment, "Your opinion"
= f.text_field :comment
...
a bunch of labels and input elements follow generated using the form helpers
这将生成工作代码,但它确实会为所有表单元素生成具有相同 id 的表单,这会在第二次呈现投票框部分时使 HTML 无效。
我解决这个问题的第一个猜测是为 form_for 指定一个唯一的 :id ,但这仅适用于 form_for 生成的表单标签,而不适用于 form_for 块内的任何标签。
这个问题的一个明确解决方案是在 form_for 和我使用的所有表单元素上手动定义我自己的唯一 ID。这比我希望的要多。
是否有一种更简单或更简洁的方法来获取与 Rails 当前在我的所有表单元素上生成它们的方式类似的格式的唯一 ID?