0

何らかの理由で、コントローラーによって作成されたjsonは、オブジェクトではなくjsonの配列を生成します。その正常な動作かどうか知りたいですか?どうすれば探しているものを手に入れることができますか。

ここにコントローラー

def index
  @articles = Article.all
  respond_to do |format|
    format.json  { render :json => @events }
  end
end

今ここで私が実際に得るもの

[{"allday":true,"created_at":"2013-01-10T23:49:19Z","customer_id":1,"description":"A meeting tomorrow between Prime Minister","id":35}]

しかし、標準のjsonが従うように、最初にオブジェクトを確認したいと思います

{ "Article":{"allday":true,"created_at":"2013-01-10T23:49:19Z","customer_id":1,"description":"A meeting tomorrow between Prime Minister","id":35}}
4

2 に答える 2

1

戻したいjsonオブジェクトの構造を反映したrubyオブジェクトまたはハッシュを作成し、レンダリングすることができます。

def index
  @articles = Article.all
  respond_to do |format|
    format.json  { render :json => @events.map { |e| { Article: e } } }
  end
end

これはあなたに次のようなものを与えるでしょう

[{ "Article":{"allday":true,"created_at":"2013-01-10T23:49:19Z","customer_id":1,"description":"A meeting tomorrow between Prime Minister","id":35}}]
于 2013-03-22T00:50:23.020 に答える
1

必要ActiveRecord::Base.include_root_in_jsonな動作をグローバルに取得できるようにする必要があります。ドキュメントから:

このオプションinclude_root_in_jsonは、の最上位の動作を制御し ますas_json。true(デフォルト)の場合as_json、オブジェクトのタイプにちなんで名付けられた単一のルートノードを発行します。例えば:

user = User.find(1)
user.as_json
# => { "user": {"id": 1, "name": "Konata Izumi", "age": 16,
#               "created_at": "2006/08/01", "awesome": true} }

ActiveRecord::Base.include_root_in_json = false

user.as_json
# => {"id": 1, "name": "Konata Izumi", "age": 16,
#     "created_at": "2006/08/01", "awesome": true}

この動作は、:rootオプションを次のfalseように設定することでも実現できます。

user = User.find(1)
user.as_json(root: false)
# =>  {"id": 1, "name": "Konata Izumi", "age": 16,
#      "created_at": "2006/08/01", "awesome": true}
于 2013-03-22T01:23:27.297 に答える