我有我的當前項目的視圖,其做類似如下(以HAML)時生成的Rails獨特的HTML標識:使用重複的部分具有的form_for
[email protected] 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
,這將產生工作代碼,但它確實產生與所有的表單元素,這使得該HTML無效,一旦votingbox部分呈現第二次相同的ID形式。
我在解決這個第一個猜測是指定一個唯一的:id來的form_for但僅適用於的form_for並沒有任何的form_for塊內的標籤生成的表單標籤。
一個明確的解決這個問題是要經過和手動定義上的form_for,我使用所有的表單元素我自己唯一的ID。這是比我所希望的更多的工作。
是否有更簡單或較清潔的方式來獲得的唯一ID格式相似的方式Rails的當前生成他們對我的所有的表單元素?
get_vote在這種情況下總是會返回'Vote.new'這將是一個未保存的ActiveRecord對象。我已經修改了原來的問題。 這裏最理想的是如果我可以根據馬物體的id生成表單id。在這種情況下,表單的id將是'vote_new_1',用於爲id爲1的Horse對象呈現該部分。 – cyberkni 2010-10-31 19:04:18
我已更新答案,請參閱。 – edgerunner 2010-10-31 19:58:49
我可以建議:':id => dom_id(馬,'投票')'generetate'horse_123_vote'。它更容易閱讀。 – Ariejan 2010-10-31 20:53:39