在一个Rails3.2应用程序中,我尝试添加一个select字段,它从外部API调用中获取数据。此数据以散列数组的形式返回:
[{"name"=>"NameA", "id"=>"001"}, {"name"=>"NameB", "id"=>"002"}]如何使用这些数据构造如下所示的select字段:
<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"}:HashB:
<%= 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"}这有可能吗?如果是这样,又是如何做到的呢?
发布于 2013-11-11 18:43:14
如果你有像这样的散列数组:
@people = [{"name"=>"NameA", "id"=>"001"}, {"name"=>"NameB", "id"=>"002"}]您可以将options_for_select助手与collect方法一起使用,如下所示:
= select_tag "people", options_for_select(@people.collect {|p| [ p['name'], p['id'] ] })完成了:-)。
https://stackoverflow.com/questions/14096126
复制相似问题