我试图创建一个使用collection_select方法<选择>元素,但似乎为了正确<选项>被选中,标识传入collection_select需要成为一个实例变量而不是局部变量(这是部分发生的)。Ruby on Rails的:如何使用局部变量在collection_select
所以,当我创建一个product
的categories
一个<选择>,适当的类别不是默认选择。
_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,除非我丢失了某些东西,产品必须是是这个部分的局部变量)。
那么如何在调用局部变量时获得collection_select来选择适当的项目?
我想加上这个,因为它自己的答案,因为最后一个似乎是有用的内部和外部本身,尽管不是你正在寻找的东西。 – 2010-04-21 17:25:27
再次感谢达米安,这似乎已经做到了,尽管它应该是:selected => product.category.id。如果您更新了答案,我会将其标记为已接受。值得注意的是:在这种情况下,下拉列表中仍然会出现:prompt选项(如果您在我的问题中使用第二个示例中的方法,那么rails足够聪明,可以让它远离选项),但我可以忍受:) – mmacaulay 2010-04-21 17:56:52
完成并完成。快乐的编码。 – 2010-04-21 18:09:04