Rails 从 select 到 return 对象中的所有参数

Rails form select to return all params in an object

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

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

在我看来,我想将此列表以 select 的形式列出。所以它会是亲戚的下拉列表,但它只会显示 select 中的 firstName 字段。当用户 select 一个对象并提交表单时,整个 相关对象将在参数中传递给控制器​​。

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

好吧,所以我决定完成这个的最好方法是在我的控制器中创建一个散列,键是显示文本,值是我的对象的 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)

当用户select一个值并提交表单时,JSON字符串将作为值返回到参数中。在控制器中,我只是将 JSON 转换回模型。谢谢大家的帮助。