在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