grouped_collection_select 不同 option_key_methods
grouped_collection_select with different option_key_methods
我正在使用具有多态关联的 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 %>
我该如何设置才能使用由两种不同模型实现的两种不同类型的名称字段?
您可以将 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} %>
我正在使用具有多态关联的 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 %>
我该如何设置才能使用由两种不同模型实现的两种不同类型的名称字段?
您可以将 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} %>