0

レールとハンドルバー付きのバックボーンを使用していて、ネストされたフォームがあります。

ユーザーを作成しようとしていますが、ユーザーは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を使用できません。しかし、それはこの質問には関係ありません。

4

0 に答える 0