2012-04-25 8 views
2

上の属性の子を入れ子に失う:私のコントローラでレールは、私が存在している必要がありhas_oneの関係を持っているフォームのエラー

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

私は新しい上の子を構築して:

フォームが送信される
@parent.build_child 

エラーが発生すると、レンダリングはビルドされた子を失うことになります。これにより、fields_forが空白になり、ユーザーが必要な子フィールドを入力できなくなります。何か案は?

+0

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

をすることになりましたの?あなたはなぜあなたの子供がリダイレクトによって救われると思いますか?エラーについての情報を表示することで 'edit'ビューを再描画する共通のアプローチです。注: 'redirect_to'ではなく' render'です。したがって、ビューには不完全なデータが表示されます。 – jdoe

+0

リダイレクトしないようにレンダリングしています。申し訳ありませんが、私はポストでそれを変更明確ではなかった。 – nfed

+0

だから、 '@ parent.build_child'を呼び出して何をしていますか?子についてのデータを埋めるために(DBに格納されていない)ビューをレンダリングしますか?フォームを塗りつぶした結果は、 'children_controller#create'に渡されます。それはあなたが '@親 'を通してあなたの'子供'にアクセスしようとしている場所ですか? – jdoe

答えて

0

はそれを考え出した:あなたはbuild_`方法は、DBには何も保存されていない `ことを実現するか

before_filter :build_child, :only => [:new, :edit, :create, :update] 
関連する問題