我需要從哈希中可用的值創建一個選擇框。Rails - 從對象哈希創建選擇標記
舉例來說,我有一個「東西」和「東西」有多種狀態字段:
1 => 'State A'
2 => 'State B'
可以通過對事物的方法。
我該如何建立一個選擇標籤?
我需要從哈希中可用的值創建一個選擇框。Rails - 從對象哈希創建選擇標記
舉例來說,我有一個「東西」和「東西」有多種狀態字段:
1 => 'State A'
2 => 'State B'
可以通過對事物的方法。
我該如何建立一個選擇標籤?
正如Schrockwell說:
Hash.each |a|
返回形式a = [key, value]
的數組,所以對於哈希@status_fields
你可以寫:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
另外,如果您想關鍵在選擇列表和值點選擇列表中值顯示出來,然後:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
這將選擇通過thing.status或沒有給出的選項如果無返回
如果你只想創建不依賴於對象的任何選擇使用
<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %>
其中「2」是所需的選擇的指數
PS:我沒有足夠的聲望去修改原來的帖子或對它發表評論
select helper method將接受一個形式爲{ text_displayed_in_select => select_value }
的散列,因此您可能需要invert散列。
你可以做類似
select "foo", "bar", @hash_object
或
select "foo", "bar", @hash_object.map { |h| [h.key, h.value] }
我可能會首先反轉的哈希值,使關鍵點的值
Hash.each |a|
返回數組形式爲a = [key, value]
,所以對於散列@status_fields
你可以寫:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
另外,如果您想關鍵在選擇列表中顯示和值點選擇列表中的值,則:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
那麼,我怎麼會告訴它選定的值 - 這看起來並沒有把它拿起來。 – 2009-05-05 14:20:30
該文檔指出「將從實例對象的調用方法返回的值將被選中。」因此,不要將'thing'作爲第一個參數傳遞,而是嘗試傳遞對象@thing的實際實例。 – Schrockwell 2009-05-05 16:17:48