在Rails 3.2應用程序中,我試圖添加一個從外部API調用中獲取數據的選擇字段。這些數據返回哈希的數組:如何使用散列數組填充select_tag?
[{"name"=>"NameA", "id"=>"001"}, {"name"=>"NameB", "id"=>"002"}]
如何使用這些數據來構建一個選擇欄,看起來像:
<select>
<option value="001"> NameA </option>
<option value="002"> NameB </option>
</select>
編輯:
感謝的建議下面我已經試過如下:
答:
<%= select_tag 'model[field]', options_from_collection_for_select(@hash, :id, :name) %>
給出了一個錯誤:
undefined method `name' for {"name"=>"NameA", "id"=>"001"}:Hash
B:
<%= select_tag 'model[field]', options_from_collection_for_select(@hash) %>
修正錯誤,但產生了錯誤的標記
<option value="{"name"=>"NameA", "id"=>"001"}"> {"name"=>"NameA", "id"=>"001"}</option>
所以我覺得我的問題是正確格式化哈希數組,並且我不知道如何操作哈希數組以解決如何執行此操作。
除非我期待在完全地將撥錯方向,我認爲關鍵這個問題是重新格式化陣列在這個問題上給:
{"NameA" =>"001", "NameB" =>"002"}
這甚至可能嗎?如果是這樣,怎麼樣?
也許會有幫助嗎? –
jxpx777
謝謝@ jxpx777,我已經看過這個。如果我使用這個解決方案,我會得到'未定義的方法'last''。我認爲我的問題在於其他地方 –
啊,因爲它是一個哈希,參數是調用select和select的值的方法。嘗試options_for_select with @ hash.to_a http://apidock.com/rails/v3.2.8/ActionView/Helpers/FormOptionsHelper/options_for_select – jxpx777