2012-02-16 17 views
1

埋め込みドキュメントの追加、編集、および削除のフォームを取得しようとしています(Rails + MongoMapper + EmbeddedDocument form help)。update_attributesは、埋め込まれたドキュメントが空になっている場合は削除しません。

ドキュメントを編集するときに、削除リンクをクリックして埋め込みドキュメントをすべて削除すると、コントローラに渡されるparamsオブジェクトには配列フィールドが全く含まれていないので、 update_attributesはそれが変更されていないと考えても無視するので、埋め込まれた文書は実際には削除されません。

他に誰かがこれに遭遇しましたか?そして、ケースバイケースでそれを扱うことのハッキリな方法以外に、すてきな、きれいな解決策がありますか?

答えて

0

これは、MongoMapperの問題よりもパラメータの問題です。 ...配列はいつものparamsて来るので、あなたはすべての答えの前に隠しフィールドを追加してみてください可能性が... Rails + MongoMapper + EmbeddedDocument form help

<%= hidden_field_tag 'problem[answers][]' %> 

そして、その意志を

を、コードをオフに構築

{ "problem" => { "answers" => [""] } 

しかし、そのよおそらくエラー...のようなあなたのparamsに通ってくるので、おそらくより良い方法は、ちょうど前に、あなたのコントローラでこれを行うことです...

params[:problem][:answers] ||= [] 
+0

あなたの2番目のオプションは、基本的に、私が想定したケースバイケースでそれを扱うハックな方法です。 – Russell

関連する問題