2009-06-15 10 views
27

Railsを使用してドロップダウン選択ボックスを作成するにはどうすればよいですか?クエリを実行したとします。Railsのドロップダウンボックス

@roles = Role.all 

次に、@ roles.nameのすべてのボックスを表示するにはどうすればよいですか?

EDIT:ドロップダウンボックスを実装した後。選択肢にどのように対応させるのですか?私はフォームを作るべきですか?

答えて

15

これは、ドロップダウンでロール名を表示するドロップダウンを作成しますが、フォームで渡された値としてrole_idを使用します。

select("person", "role_id", @roles.collect {|r| [ r.name, r.id ] }, { :include_blank => true }) 
+0

私が投稿しようとしていたもの。また、http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M001592 –

+0

で選択したAPIドキュメントを見つけることができます。人物のないIDだけを投稿するにはどうすればよいですか[role_id] .. role_id? – quantumpotato

3

フォームヘルパーには、ドロップダウン選択ボックスを作成するための具体的な方法のグループがあります。通常、select_tagメソッドを使用してドロップダウンボックスを作成しますが、あなたの場合は、ActiveRecordモデルを使用してフォームを自動的に取り込むcollection_selectを使用できます。 http://guides.rubyonrails.org/form_helpers.html

43

これはあなたのような何かを書くことができますcollection_selectヘルパー http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M001593

を使用します:

<%= collection_select @roles %> 

ここではRailsのフォームヘルパーの詳細をご覧ください:あなたのビューで

collection_select(:user, :role_id, @roles, :id, :role_title, {:prompt => true}) 

と取得する

<select name="user[role_id]"> 
    <option value="">Please select</option> 
    <option value="1" selected="selected">Administrator</option> 
    <option value="2">User</option> 
    <option value="3">Editor</option> 
</select> 
+0

私は正確なことをする必要があります。名前はどこに行きますか?コントローラ?どのように見えるだろうか? – Ken

1

表示役割のテキスト(第一Pluckの引数)を示すコンボボックスなどの名前と、それはロールIDに

コントローラ

@roles = Role.pluck(:name, :id) 

ビューを表し

<%= select("role", "role_id", @roles) %> 

のparams [:役割] [ :role_id]がビューからコントローラに渡されました。