我正在使用具有多态关联的grouped_collection_select
来为任务分配company
或person
。问题是人们有名字和姓氏,而公司只有名字。我想使用:fname
和lname
的串联作为菜单中人员组的option_key_method
,我想使用:name
作为option_key_method
}对于菜单中的公司组。
但是我在Google调查中没有遇到过这个问题。就目前而言,我使用:email
作为option_key_method
,因为它是两个模型共享的最显着的字段:
<%= f.grouped_collection_select :entity_id, [Company, Person], :all, :model_name, :to_global_id, :email %>
我如何设置它以使用由两个不同模型实现的两种不同类型的名称字段?
答案 0 :(得分:1)
您可以将lambda方法传递给option_key_method
,它会获取您手中的当前对象Person
或Group
,并且您可以在其上执行所需的处理
示例:
<%= f.grouped_collection_select :entity_id, [Company, Person], :all, :model_name, :to_global_id, lambda {|company_or_person_object| company_or_person_object.instance_of? Company ? company_or_person_object.fname + company_or_person_object.lname : company_or_person_object.name} %>