レールとハンドルバー付きのバックボーンを使用していて、ネストされたフォームがあります。
ユーザーを作成しようとしていますが、ユーザーはURLを指定できます。だから私はユーザーモデルとURLモデルを持っています
こんなことができると思った
<form id = "new_user"> <labelname="username">ユーザー名</label> <input type = "text" name = "username" /> <label name = "url"> url </ label> <input type = "text" class = "nested urls_attributes" name = "url" /> </ form>
- - - - - - - - - - - アップデート - - - - - - - - - - - - - - --------------
これはめったに使用されないものなので、フォームを送信するときに正しいjsonを作成するようにバックボーンビューを更新しました。フォームの送信時に、最初のjsonを作成してから、ネストされたオブジェクトを追加します。
var form_json = MyApp.Helpers.Serialize_Form($('form#user_form input')。not('。nested')); form_json ['urls_attributes'] = MyApp.Helpers.Serialze_Form($('form#user_form input.nested'));
これにより、jsonが次の形式で作成されます。
{ユーザー名: "test"、urls_attributes:{url: "http:// test"}}
したがって、それをコントローラーに渡すと、ユーザーの作成時にURLが作成されることを期待していました。
残念ながら、それは起こっていないようで、私にはエラーがありません。ユーザーは作成されますが、ネストされたURLモデルは作成されません。
なぜこれが起こっているのか考えていますか?
-----------jsonの作成方法----------------------
フォームをjsonオブジェクトに変換します
serialize_objects:function(inputs){ //これはフォーム入力を受け取り、それらのjson文字列を作成します var o = {}; $ .map(inputs、function(t){ if(o [t.name]!== undefined){ if(!o [t.name] .push){ o [t.name] = [o [t.name]]; } o [t.name] .push(t.value ||''); } そうしないと { o [t.name] = t.value || ''; } }); oを返します。 }
serializeArrayを実装していないjqMobiを使用しているため、jqueryserializeArrayを使用できません。しかし、それはこの質問には関係ありません。