我試圖創建一個使用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