2012-04-25 47 views
2

我有一个HAS_ONE关系必须存在:的Rails输了球嵌套属性子上的形状误差

has_one :child, :dependent => :destroy 
validates_presence_of :child 

在我控制我建立孩子对新搭配:

@parent.build_child 

当表单提交如果出现错误,渲染最终会丢失内置的孩子。这会导致我的fields_for为空,从而阻止用户输入所需的子字段。有任何想法吗?

+0

你意识到'build_'方法不保存任何东西DB?你为什么期望你的孩子通过重定向被拯救?通常的方法是再次显示“编辑”视图并显示有关错误的信息。注意:'render',而不是'redirect_to'。因此,您的视图将填充您预期的不完整数据。 – jdoe 2012-04-25 15:44:26

+0

我渲染不重定向。对不起,不清楚,我在帖子中改变了它。 – nfed 2012-04-25 16:18:34

+0

所以你打电话给'@ parent.build_child',然后呢?你渲染一些视图来填充有关孩子的数据(该窗台不存储在数据库中)?填充表单的结果被传递给'children_controller#create',对吧?这是你试图通过“@ parent”访问你的“孩子”的地方吗? – jdoe 2012-04-25 16:46:20

回答

0

想通了:

before_filter :build_child, :only => [:new, :edit] 

应该是:

before_filter :build_child, :only => [:new, :edit, :create, :update]