我的控制器中有一个列表如下:
@relatives = [
{
id: '1',
firstName: 'John',
lastName: 'Smith',
related: 'Father'
},
{
id: '2',
firstName: 'Sarah',
lastName: 'Smith',
related: 'Mother'
}
]
我想将此列表放在我的视图中选择的表单中。所以这将是亲戚的下拉,但它只会在选择中显示firstName字段。当用户选择一个对象并提交表单时,整个相对对象将被传递给参数中的控制器。
我正在查看rails collection_select API,但无法弄清楚如何在表单中选择整个对象。
答案 0 :(得分:0)
好吧,所以我决定最好的方法就是在我的控制器中创建一个哈希,键是显示文本,值是我对象的JSON表示。
控制器:
@relatives = {
"John" => "{id: 1, firstName: 'John', lastName: 'Smith', related: 'Father'}",
"Sarah" => "{id: 2, firstName: 'Sarah', lastName: 'Smith', related: 'Mother'}"
}
然后在我看来,我会使用options_for_select:
f.select :relative, options_for_select(@relatives)
当用户选择一个值并提交表单时,JSON字符串将作为值返回参数。从控制器,我只是将JSON转换回模型。感谢大家的帮助。