私は簡単な問題であると私が思うことに苦労しています。
Rails 3.0.8でsimple_form 1.4 gemを使用して作業しています。
私には2つのモデル、ownersとowner_typesがあります。
class Owner < ActiveRecord::Base
belongs_to :own_type
attr_accessible :name, :own_type_id
end
class OwnerType < ActiveRecord::Base
has_many :owners
attr_accessible :name, :subtype_name
end
所有者ビューの_formパーシャルに、owner_type関連付けの名前とsubtype_nameの両方を表示する選択ボックスが必要です。
....次のようなもの:所有者タイプ:[名前| subtype_name]例[政府|連邦]; [政府|市町村]
私のビューには次が含まれています:app/views/owners/_form.html.erb
<%= simple_form_for @owner do |f| %>
<%= f.error_messages %>
<%= f.input :name %>
<%= f.association :owner_type, :include_blank => false %>
<%= f.button :submit %>
<% end %>
... f.associationは、デフォルトではowner_type.nameフィールドのみをリストします。異なるフィールド、または私の場合は2つのフィールドをどのように指定しますか?
すべての助けに感謝します。前もって感謝します。
DJ
これには:label_methodオプションを使用する必要があります。
<%= f.association :owner_type, :include_blank => false, :label_method => lambda { |owner| "#{owner.name} | #{owner.subtype_name}" } %>
または、所有者のクラスでselect_labelメソッドを定義すると、次のことができます
<%= f.association :owner_type, :include_blank => false, :label_method => :select_label %>
これを行う最も簡単な方法は、モデルにメソッドto_labelを実装することです。このような:
class OwnerType < ActiveRecord::Base
def to_label
"#{name} | #{subtype_name}"
end
end
SimpleFormは、デフォルトでモデルのこのメソッドを検索し、次の順序でlabel_methodとして使用します。
:to_label, :name, :title, :to_s
Simple_form.rbイニシャライザーでこのオプションを変更することも、入力の:label_method
オプションにブロックまたはメソッドを渡すこともできます。