小编cyb*_*kni的帖子

使用具有form_for的重复部分时,在Rails中生成唯一的HTML ID

我有一个关于我当前项目的视图,它执行以下操作(以haml为单位):

-@horses.each do |horse|
  = render :partial => 'main/votingbox', :locals => {:horse => horse}
Run Code Online (Sandbox Code Playgroud)

在_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
Run Code Online (Sandbox Code Playgroud)

这将生成工作代码,但它确实为所有表单元素生成具有相同ID的表单,这使得一旦第二次呈现投票箱部分时HTML就无效.

我对修复此问题的第一个猜测是指定一个唯一的:form to form,但它仅适用于form_for生成的表单标记,而不适用于form_for块中的任何标记.

这个问题的一个明确的解决方案是在form_for和我使用的所有表单元素上手动定义我自己的唯一ID.这比我希望的工作更多.

是否有一种更简单或更简洁的方法来获得与Rails当前在我的所有表单元素上生成它们的方式类似的独特ID?

haml ruby-on-rails actionview

5
推荐指数
1
解决办法
2039
查看次数

标签 统计

actionview ×1

haml ×1

ruby-on-rails ×1