groups_collection_select与不同的option_key_methods

时间:2015-10-21 08:45:42

标签: ruby-on-rails ruby-on-rails-4 polymorphic-associations grouped-collection-select

我正在使用具有多态关联的grouped_collection_select来为任务分配companyperson。问题是人们有名字和姓氏,而公司只有名字。我想使用:fnamelname的串联作为菜单中人员组的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 %>

我如何设置它以使用由两个不同模型实现的两种不同类型的名称字段?

1 个答案:

答案 0 :(得分:1)

您可以将lambda方法传递给option_key_method,它会获取您手中的当前对象PersonGroup,并且您可以在其上执行所需的处理

示例:

<%= 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} %>