1

JavaScript から Ruby に 2 次元配列を渡すにはどうすればよいですか? 私はこれをクライアント側に持っています:

function send_data() {
    var testdata = {
        "1": {
            "name": "client_1",
            "note": "bigboy"
        },
        "2": {
            "name": "client_2",
            "note": "smallboy"
        }
    }

    console.log(testdata);
    $.ajax({
      type: 'POST',
      url: 'test',
      dataType: 'json',
      data: testdata
    });
  }

そしてこれはサーバー側で:

post '/test' do p params end

しかし、私はそれを正しく理解できません。サーバー側で得られる最高のものは次のようなものです

{"1"=>"[object Object]", "2"=>"[object Object]"}

クライアント側に JSON.stringify を追加し、サーバー側に JSON.parse を追加しようとしましたが、最初の結果は

{"{\"1\":{\"name\":\"client_1\",\"note\":\"bigboy\"},\"2\":{\"name\":\"client_2\",\"note\":\"smallboy\"}}"=>nil}

後者は TypeError をスローしましたが、ハッシュを文字列に変換できません。

誰か助けてくれますか、正しいコードの短いスニペットを投稿してください。ありがとうございました

4

2 に答える 2

0

これが役立つかどうかはわかりませんが、フィールドをシリアル化するか、配列を反復するという2つの考えがあります。

サブ配列を格納する必要のあるフィールドをシリアル化するように設定することで、json配列をactiverecordオブジェクトに取り込むことができました。

class MyModel < ActiveRecord::Base
  serialize :tags
end

イテレータを使用してjson配列を処理します。

f = File.read("myarrayof.json")
jarray = JSON.load(f)
jarray.each { |j| MyModel.create.from_json(j.to_json).save }

前後の変換は少し面倒に思えますが、配列を処理する最も明白な方法であることがわかりました。

于 2010-06-30T13:22:23.050 に答える
0

JSON を JavaScript 側で手動で作成することをお勧めします。

[[{'object':'name1'},{'object':'name2'}],[...],[...]]

これにより、オブジェクトを含む配列の配列が構築されます。

次のようになります。

testdata = [[{
        "1": {
            "name": "client_1",
            "note": "bigboy"
        }],
        [{"2": {
            "name": "client_2",
            "note": "smallboy"
        }]
    }]

私はここで何か違うかもしれませんが、これはそれがどのように見えるかに近いはずです.

于 2009-10-30T02:35:18.200 に答える