1

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を取得して適切なアイテムを選択するにはどうすればよいですか?

4

2 に答える 2

2

:selectedオプションハッシュでキーを渡してみましたか?電流を供給すると、product.id期待どおりに動作するはずです。

<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, {:prompt => "-- Select a category --", :selected => product.category.id}) %>

于 2010-04-21T17:24:39.223 に答える
1

コレクションをパーシャルに渡し、ローカル変数を指定してそれらを次のように渡すことができます。

<%= render :partial => "products/product_row", :collection => @products, :as => :products %>

関連ドキュメント:http ://apidock.com/rails/ActionView/Partials

于 2010-04-20T17:43:09.780 に答える