2012-04-25 84 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]