2011-08-05 13 views
0

私はモデルから取り込みたい単純なドロップダウンを持っています。私はそれを別のモデルに全くバインドしたくありません。単純なスタンドアロンのフォームで項目のリストを作成し、ドロップダウンの状態をセッション変数に格納する処理をしています。それは私にはあまり「レール」を感じません。簡単なドロップダウンを実装するための方法Rails

<form action='/home/switch' method='post'> 
    <select name="all_items"> 
    <% @items.each do |i| %> 
     <option value="<%= i.id %>" <%= i.id.to_s == session[:current_item] ? "selected" : "" %>><%= i.name %></option> 
    <% end %> 
    </select> 
    <input type="submit"> 
</form> 

これをRailsで行うより良い方法はありますか?

更新:はい。 collection_selectは私のために働いた:

<%= collection_select(:item, :id, Item.all, :id, :name, {:selected => session[:current_item].id}) %> 

答えて

0

form_tagselect_tagoptions_from_collection_for_select、および/またはcollection_selectを見てみましょう。

これは、「選択」ビットが欠落しているので、あなたの例は、(、テストされていないタイプミスを有していてもよい)のようになります

<%= form_tag('/home/switch') do %> 
<%= select_tag('all_items', options_from_collection_for_select(@items, 'id', 'name')) %> 
<%= submit_tag %> 
<%= end %> 

、そのためのドキュメントを見てみましょう。

+0

私はcollection_selectを使用してしまいました –

関連する問題