2012-03-04 19 views
1

說實話,我幾乎覺得HTML表單比Rails形式助手更簡單。我試圖把這種文字形式與選項加拿大,美國,墨西哥作爲字符串的Rails:將文本形式到選擇框

<p><%= f.label :country %><br /> 
    <%= f.text_field :country %></p> 

一個選擇框由於該模型在塊變量「F」代表已經,我不知道怎麼樣改變語法,因爲該模型通常在變量和選項http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

誰能告訴我複雜的哈希首次代表?

回答

9

下面應該工作:

<%= f.select :country, [["Canada", "Canada"], ["Mexico", "Mexico"], ["United States", "United States"]] %> 

你可以閱讀更多的Rails Guides & API docs。正如@ ka8751說,不過,如果你有一個Country模型,collection_select使這要容易得多:

<%= f.collection_select :country, Country.all, :id, :name %> 

其中:id用於<option>標籤的實際value:name用於顯示的內容。

如果你不要有一個Country模型,你應該考慮一個爲了database normalization的緣故。

+0

我將其作爲對用戶模型設計一個領域。這會改變你的答案嗎? – Leahcim 2012-03-04 21:17:20

+0

@邁克爾它不應該,不。我對Devise沒有任何經驗,但模型屬性仍然是一個模型屬性,不過,設計與否。我的回答有問題嗎? – 2012-03-04 21:18:25

0

我認爲你在這裏有錯誤:你正在使用text_field而不是select方法。爲了使選擇框,我會建議你使用collection_select方法:

<%= f.collection_select :country, Country.all, :id, :name %> 

也有一個美妙的寶石country_select解決您的問題,它使用formtastic formtastic我也建議你使用的構建形式。

+0

他們不犯錯誤,他們正試圖改變他們必須使用''