簡體   English   中英

Ruby on Rails:如何在collection_select中使用局部變量

[英]Ruby on Rails: How to use a local variable in a collection_select

我正在嘗試使用collection_select方法創建一個<select>元素,但是似乎為了選擇正確的<option>,傳遞給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 --"}) %>

截圖:

替代文字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(IOW,除非缺少某些內容,否則product 必須是此部分中的局部變量)。

那么,當使用局部變量調用它時,如何使collection_select選擇合適的項目呢?

您是否嘗試過在選項哈希中傳遞:selected鍵? 如果您為它提供當前的product.id它的行為應與您期望的一樣。

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

您可以將集合傳遞給partials,並指定一個局部變量以將它們傳遞為:

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

相關文檔: http : //apidock.com/rails/ActionView/Partials

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM