3

初心者の質問があります。

以下のRubyコードは、Output1に示されているJSONを返します。これを変更して、Output2に表示されるJSONを返すにはどうすればよいですか。つまり、各レコードは顧客レコード内にあります。

コード:

def index
    @customers = Customer.all
    respond_to do |format|
        format.html
        format.json {render json: @customers.to_json}
    end
end

出力1:

[
    {
        "address":"123 Main Ave, Palo Alto, CA",
        "created_at":"2012-07-10T19:49:24Z",
        "id":1,
        "name":"ACME Software Inc.",
        "phone":"1-650-555-1500",
        "updated_at":"2012-07-10T19:49:24Z"
    },
    {
        "address":"555 Art Drive, Mountain View, CA",
        "created_at":"2012-07-10T19:50:19Z",
        "id":2,
        "name":"My Company",
        "phone":"1-415-555-1000",
        "updated_at":"2012-07-10T19:50:19Z"
    }
]

出力2:

[
    {
        "customer":{
            "address":"123 Main Ave, Palo Alto, CA",
            "created_at":"2012-07-10T19:49:24Z",
            "id":1,
            "name":"ACME Software Inc.",
            "phone":"1-650-555-1500",
            "updated_at":"2012-07-10T19:49:24Z"
        }
    },
    {
        "customer":{
            "address":"555 Art Drive, Mountain View, CA",
            "created_at":"2012-07-10T19:50:19Z",
            "id":2,
            "name":"My Company",
            "phone":"1-415-555-1000",
            "updated_at":"2012-07-10T19:50:19Z"
        }
    }
]
4

3 に答える 3

4

すべてのモデルでこの動作が必要な場合は、次のことができます。

ActiveRecord::Base.include_root_in_json = true

イニシャライザで。

単一モデルの場合は、

self.include_root_in_json = true

モデル自体で。

于 2012-07-30T19:48:51.340 に答える
3

Rails 3.2以降、次のことができます。

format.json {render json: @customers.to_json(:root => true)}
于 2012-07-30T19:51:39.797 に答える
0

なぜこれが必要なのかわかりませんが、簡単な方法が1つあります。

format.json {render json: @customers.map{ |x| {'customer' => x } }.to_json}
于 2012-07-30T19:46:34.730 に答える