我有一个模型主菜属于模型Vin,它本身属于模型Producteur。在创建模型时初始化子模型
在Entree创建/编辑的表单上,我希望允许用户定义父Vin和Producteur的属性以创建它们,或者如果它们存在(基于用户输入进行检索),可以检索它们。
现在我做主菜new
以下和edit
操作:
@entree = Entree.new
@entree.vin = Vin.new
@entree.vin.producteur = Producteur.new
和使用形式fields_for
帮手,而工作。但是我打算对更多模型有更多的依赖关系,所以我想让它保持干燥。我所定义的回调after_initialize
在Vin的模型它执行初始化producteur:
class Vin < ActiveRecord::Base
after_initialize :vin_setup
def vin_setup
producteur = Producteur.new
end
end
和从控制器移除producteur.new
。然而,获得新动作的错误:
未定义的方法`MODEL_NAME”的NilClass:类
的形式,说
<%= fields_for @entree.vin.producteur do |producteur| %>
行我想这意味着after_initialize回调不会像我期望的那样工作。有什么我失踪?另外,如果我在Vin模型中定义after_initialize
方法而不是定义回调,则会出现相同的错误。
感谢,这就行了。我认为既然producteur是一个明确的关联,它就会认识到它。 – Antoine 2012-03-28 17:36:26