Rails表单选择返回对象中的所有参数

时间:2015-03-19 17:00:22

标签: ruby-on-rails forms select

我的控制器中有一个列表如下:

@relatives = [
    {
        id: '1',
        firstName: 'John',
        lastName: 'Smith',
        related: 'Father'
    },
    {
        id: '2',
        firstName: 'Sarah',
        lastName: 'Smith',
        related: 'Mother'
    }
]

我想将此列表放在我的视图中选择的表单中。所以这将是亲戚的下拉,但它只会在选择中显示firstName字段。当用户选择一个对象并提交表单时,整个相对对象将被传递给参数中的控制器。

我正在查看rails collection_select API,但无法弄清楚如何在表单中选择整个对象。

1 个答案:

答案 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转换回模型。感谢大家的帮助。