レールとハンドルバー付きのバックボーンを使用していて、ネストされたフォームがあります。
ユーザーを作成しようとしていますが、ユーザーは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を使用できません。しかし、それはこの質問には関係ありません。