我正在尝试使用collection select方法创建一个select元素,但似乎为了选择正确的选项,传递到collection select的标识符需要是一个实例变量,而不是一个局部变量(这发生在部分变量中)。
因此,当我为
categories
A的
product
,默认情况下不选择正确的类别。
_ product_row.erb(不工作):
My product: <%= product.name %>
<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
截图:
alt text http://img534.imageshack.us/img534/8929/screenshot20100421at120.png
我发现我可以通过在手前声明一个实例变量来让它工作,但这对我来说似乎是一个巨大的攻击。
_ product_row.erb(作品):
<% @product_select_tmp = product %>
<%= collection_select(:product_select_tmp, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
截图:
alt text http://img534.imageshack.us/img534/1958/screenshot20100421at120l.png
因为这个部分正在迭代一个产品集合,所以我不能在控制器中声明@product(iow,除非我缺少某些东西,product
必须
是局部变量)。
那么,当使用局部变量调用集合时,如何让它选择适当的项?