1

ポリモーフィックな関連付けを使用して、またはをタスクgrouped_collection_selectに割り当てています。問題は、人には名前と姓があるのに対し、会社には名前しかないということです。との連結をメニューの個人グループの として使用したいと思います。メニューの会社グループの として使用したいと思います。companyperson:fnamelnameoption_key_method:nameoption_key_method

ただし、Googleの調査ではこれに出くわしていません。現状では、 を として使用:emailしています。option_key_methodこれは、2 つのモデルで共有される最も特徴的なフィールドだからです。

<%= f.grouped_collection_select :entity_id, [Company, Person], :all, :model_name, :to_global_id, :email %>

2 つの異なるモデルによって実装される 2 つの異なる種類の名前フィールドを利用するには、どのように設定すればよいでしょうか?

4

1 に答える 1

1

にラムダメソッドを渡すことができます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} %>
于 2015-10-21T09:24:10.003 に答える