0
私は、私の製品のショービューでjoin modelを通じて私のProducttracklisting has_many用のフォームをネストしようとしています。これを行う正しい方法は何ですか?私は様々な失敗した試みに対してさまざまなエラーを出しています。次のように モデルは以下のとおりです。結合モデルのフォームを入れ子にする正しい方法ですか?
class Product < ActiveRecord::Base
has_many :producttracklistings
has_many :tracks, :through => :producttracklistings
end
class Track < ActiveRecord::Base
has_many :producttracklistings
has_many :products, :through => :producttracklistings
end
class Producttracklisting < ActiveRecord::Base
belongs_to :product
belongs_to :track
end
次のような形式は次のとおりです。
<%= form_for(@producttracklisting) do |f| %>
<%= f.label :track_id %>
<%= f.text_field :track_id %>
<%= f.label :product_id %>
<%= f.text_field :product_id %>
<%= f.submit %>
<% end %>
と私が使用して製品/ショーにこれを持参しようとしています:
すべてで<%= render 'producttracklistings/form' %>
上記の私はNilClassのための "未定義のメソッド` model_name 'を得る:クラス "
ありがとうございました。
ありがとう! – Raoot
実際、私はそれが私の後ろであるかどうかわからないし、私は「入れ子になった」という言葉を誤解しているかもしれないと思う。私がやってみたいのは、Producttracklistingフォームを製品ショービューに持ち込んで、その製品にトラックを関連付けることだけです。私は基本的に、それぞれのトラックを '製品に追加'ボタンで表示するループを実行することを計画しています。これは、製品トラックリスト/新しいビュー内で完全に機能します。 – Raoot
ああ...そうだ。確かに、 "NilClass:Class"の定義されていないメソッド 'model_name'のエラーは、form_for呼び出しでモデル名を解決できないことを意味します(ergo @producttracklistingは設定されていません)。したがって、同じフォームを使用するには、コントローラでこの変数を設定する必要があります。つまり、 '@producttracklisting = @ product.producttracklistings.build'などです。 – Vapire