更新:在底部的解決方案如何在嵌套窗體中使用select_tag幫助器?
我希望別人花了一些時間熨平這個相同的問題......我在軌道應用程序內建立一個通訊錄,我有一個人模型和電子郵件模型。人員has_many電子郵件和人員accep_nested_attributes_for:電子郵件。
這一切都完美 - 我有一個嵌套的表單,我可以添加和刪除電子郵件及其屬性在我的表單中(使用類似於Railscasts 196-7(here))的方法。提交表單將創建人員以及電子郵件,並創建所有正確的關聯。
現在的問題是,我無法找到一種方法在嵌套的電子郵件模型上使用select標籤,以便用戶爲該電子郵件選擇KIND(例如work,home,other)。所以,現在編輯Person模型,沒有簡單的方法來選擇存儲在rails模型中的屬性。
這是我現在有:
<%= form_for(@source) do |f| %>
<% f.fields_for :emails do |builder| %>
. . .
<%= builder.text_field :address, :size => 15 %>
<%= render :partial => 'email_select_1' %>0<%= render :partial => 'email_select_2' %>0<%= render :partial => 'email_select_3' %>
注:以上是允許我使用相同的代碼片段在JavaScript以後設置ID的哈克的方式。諧音吐出一個硬編碼的選擇和選項,在這種情況下,「0」,但在javascript,我可以將其更改爲一個獨特:
<select id="person_emails_attributes_0_kind" name="person[emails_attributes][0][kind]"><option value="work">work</option><option value="home">home</option><option value="other">other</option></select>
,然後剩下的看起來像這樣(縮寫):
. . .
<% end %>
. . .
<!-- more form stuff, actions, etc... -->
. . .
<% end %>
有沒有辦法使用select_tag幫助器,並替換我的hacky-hard-coded select?如果沒有,對編寫我自己的幫手方法有什麼建議?
在此先感謝!
更新:感謝Geoff的解決方案。對於後人來說,最重要的是使用select而不是select_tag。然後你可以這樣做:
<%= builder.select :kind, [['work', 'work'], ['home', 'home'], ['other', 'other']]%>
在測試中,我得到這個錯誤: 未定義的方法'select_tag」爲#<::的ActionView ::幫手FormBuilder:0x1343deb38> 任何想法? – 2010-07-10 22:40:27
它是builder.select關於那...對我的帖子。 – 2010-07-11 02:13:49
太好了,謝謝!完美的作品。 – 2010-07-12 03:14:40