Rails 3.1 include_root_in_json - PullRequest
       3

Rails 3.1 include_root_in_json

6 голосов
/ 29 июня 2011

ActiveRecord::Base.include_root_in_json = true, похоже, не работает в rails 3.10.rc4, и я не вижу его в документации.

Поскольку корневой элемент по умолчанию отключен, как мы можем повторно включитьэто?

@comments.to_json в рельсах 3.1 теперь выглядит как

[
  {
    comment: "Fun street park.",
    created_at: 2011-06-29T02:28:29Z,
  }
]

И в предыдущих версиях у него был корневой узел, который мне нужно вернуть.

[
  {
    comment: {
      comment: "Fun street park.",
      created_at: 2011-06-29T02:28:29Z
    }
  }
]

Ответы [ 3 ]

15 голосов
/ 30 июня 2011

Оказывается, Rails 3.1 просто создает этот файл конфигурации json для вас.Я не знал, что этот файл был здесь, поэтому мой файл в инициализаторах был проигнорирован.

В ответе Райана выше переопределяет этот параметр.

config / initializers / wrap_parameters.rb

# Be sure to restart your server when you modify this file.
#
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.

# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
ActionController::Base.wrap_parameters :format => [:json]

# Disable root element in JSON by default.
if defined?(ActiveRecord)
  ActiveRecord::Base.include_root_in_json = false
end
8 голосов
/ 29 июня 2011

Попробуйте установить это прямо на вашей Comment модели.

class Comment < ActiveRecord::Base
  self.include_root_in_json = true
end
3 голосов
/ 18 ноября 2011

Также представляет интерес обертка params, новая в rails 3.1:

ActionController :: ParamsWrapper

Оборачивает хэш параметров во вложенный хэш.Это позволит клиентам отправлять запросы POST без указания корневых элементов.

http://edgeapi.rubyonrails.org/classes/ActionController/ParamsWrapper.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...