我的控制器中有一个列表,看起来像:
@relatives = [
{
id: '1',
firstName: 'John',
lastName: 'Smith',
related: 'Father'
},
{
id: '2',
firstName: 'Sarah',
lastName: 'Smith',
related: 'Mother'
}
]
字符串
我想把这个列表中的一个形式选择在我的看法。因此,它将是一个relatives的下拉列表,但它只显示select中的firstName字段。当用户选择一个对象并提交表单时,* 整个 * 相对对象将通过参数传递给控制器。
我正在研究rails collection_select API,但不知道如何在表单中选择整个对象。
2条答案
按热度按时间baubqpgj1#
好了,所以我决定完成这一点的最好方法是在我的控制器中创建一个散列,键是显示文本,值是我对象的JSON表示。
控制器:
字符串
然后在我看来,我将使用options_for_select:
型
当用户选择一个值并提交表单时,JSON字符串将在参数中作为值返回。从控制器中,我将把JSON转换回模型。谢谢大家的帮助。
pkmbmrz72#
Rails 7的答案
它可能也适用于其他版本,因为我刚刚使用Rails 7。
字符串
由于为
id
和value
提供的:符号实际上调用了对象提供的任何内容,因此可以提供对象列表并直接使用to_json
方法。这将把address对象的所有属性作为json字符串添加到params中。正如@32clemons已经提到的,你必须将它转换回控制器。
PS:我的地址对象:
型
:label也可以被定义为模型中的一个函数,作为地址对象的其他属性的组合,但在我的例子中,它是我用来检查地址的API(HERE Maps)的返回值。