2012-03-04 17 views
1

正直言って、私はほとんどのhtmlフォームをRailsフォームヘルパーよりも簡単に見つけることができます。私はモデルがすでにブロック変数「F」で表現されているので、私はどのようにわからない文字列Rails:テキストボックスを選択ボックスに変更

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

などのオプションカナダ、米国、メキシコとの選択ボックスには、このテキスト形式をオンにしようとしモデルは通常、変数とオプションの複雑なハッシュで最初に表現されるため、構文を変更することができます。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は、このはるかに容易になります::idは、実際の<option>タグのvalue:nameのために使用されている

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

が表示されているもののために使用されています。

のモデルがCountryでない場合は、database normalizationのモデルを考慮する必要があります。

+0

私はdeviseのUserモデルのフィールドとして追加しています。それはあなたの答えを変えますか? – Leahcim

+0

@Michaelそうではありません。私はDeviseの経験はありませんが、モデル属性はまだモデル属性です。私の答えに問題はありましたか? –

0

ここでは間違いがあります:selectメソッドの代わりにtext_fieldを使用しています。

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

はまた、あなたの問題を解決するための素晴らしい宝石country_selectがあり、それは私も自分のフォームを構築するために使用することをお勧めいたしますformtastic formtasticで使用される:セレクトボックスを作るために私はあなたがcollection_selectメソッドを使用することをお勧めします。

+0

彼らは間違いをしなかった、彼らは '