会場とコンサートの2つのモデルがあります。コンサートは会場に属しており、会場にはたくさんのコンサートがあります。私のフォームでは、カスタムセッターを使用してコンサート会場を設定しています。フォームは次のようになります。
<%= form_for @concert do |f| %>
<%= f.label :venue_name, "Venue" %>
<%= f.text_field :venue_name %>
それから私のモデルでは:
def venue_name=(name)
self.venue = Venue.find_or_create_by_name(name) if name.present?
end
これに伴う問題は、モデルが作成されている場合は、モデルにアドレスを追加したいということです。これは子供のフォームで可能ですか?セッターに名前と住所の両方を渡すことは可能ですか?
編集:
以下に提案されているコメントのように、accepts_nested_attributes_forの使用に移行しました。Ryan Batesは、これに関するすばらしいスクリーンキャストをここに持っています:http: //railscasts.com/episodes/196-nested-model-form-revisedまたはドキュメントも問題ありません。
私は前もってこれにaccepts_nestedを使用していましたが、これはbelongs_to側にあるため、苦労しました。戻った今の私の修正は、この例では、@ concert.venue.buildを実行する代わりに、belongs_to側の構文が@concert.build_venueであるということです。