モデルVinに属するEntreeモデルがあります。モデル自体はモデルProducteurに属しています。モデル作成時に子モデルを初期化する
Entree作成/編集のフォームでは、親VinおよびProducteurの属性を作成するか、存在する場合に検索する(ユーザー入力に基づいた検索)ための属性をユーザーが定義できるようにします。
@entree = Entree.new
@entree.vin = Vin.new
@entree.vin.producteur = Producteur.new
と形でfields_for
ヘルパーを使用し、それが動作します:今、私はアントレnew
とedit
アクションで次の手順を実行するために
。しかし、私はもっと多くのモデルとの依存関係を深めたいので、私はそれをDRYにしておきたいと思います。
class Vin < ActiveRecord::Base
after_initialize :vin_setup
def vin_setup
producteur = Producteur.new
end
end
コントローラからproducteur.new
を削除する:私はproducteurの初期化を行いVinのモデルでafter_initialize
コールバックを定義しました。
未定義のメソッドNilClassため `MODEL_NAME」:しかし、新しいアクションのエラーを取得し、私はそれが意味を推測
<%= fields_for @entree.vin.producteur do |producteur| %>
を言う形でのラインのためのクラス
after_initializeコールバックは期待通りに動作しません。私は行方不明のものがありますか?また、コールバックを定義するのではなく、Vinモデルでafter_initialize
メソッドを定義すると、同じエラーが発生します。
おかげで、それをしないこと。私はproducteurは定義された協会だと思った、それはそれを認識することができた。 – Antoine