grouped_collection_select 不同 option_key_methods

grouped_collection_select with different option_key_methods

我正在使用具有多态关联的 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 %>

我该如何设置才能使用由两种不同模型实现的两种不同类型的名称字段?

您可以将 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} %>