collection_selectメソッドを使用して<select>要素を作成しようとしていますが、適切な<option>を選択するには、collection_selectに渡される識別子がローカル変数ではなくインスタンス変数である必要があるようです(これは部分的に起こっています)。
したがって、の<select>を作成すると、categories
デフォルトproduct
では適切なカテゴリが選択されません。
_product_row.erb(機能しません):
My product: <%= product.name %>
<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
スクリーンショット:
代替テキストhttp://img534.imageshack.us/img534/8929/screenshot20100421at120.png
事前にインスタンス変数を宣言することで動作させることができたのですが、これは私にとっては大きなハックのようです。
_product_row.erb(WORKS):
<% @product_select_tmp = product %>
<%= collection_select(:product_select_tmp, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
スクリーンショット:
代替テキストhttp://img534.imageshack.us/img534/1958/screenshot20100421at120l.png
このパーシャルは製品のコレクションを反復処理しているため、コントローラーで@productを宣言することはできません(何かが足りない場合を除いて、製品はこのパーシャルのローカル変数である必要があります)。
では、ローカル変数を使用して呼び出すときに、collection_selectを取得して適切なアイテムを選択するにはどうすればよいですか?