Такое ощущение, что это должно быть просто, но после Googling в течение часа я не могу понять это.Rails 4: предотвратить добавление корневого узла 'to_json'?
Я отправляю документ политики Amazon S3 «как JSON на свой сервер. Мне нужно закодировать JSON как есть, но Rails добавляет материал в «params», который загромождает JSON, который мне нужно кодировать.
Вот что у меня есть:
class Api::Amazons3Controller < Api::BaseController
def sign_policy
policy_document = params.except(:action, :controller)
encoded_policy_document = Base64.encode64(policy_document.to_json).gsub(/\n|\r/, '')
signature = Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
ENV['AWS_SECRET_ACCESS_KEY'],
policy_document)
).gsub(/\n/, '')
response = { policy: policy_document, signature: signature }
render json: response
end
end
Я пытался 'очистить' в Params с params.except (: действие,: контроллер), но policy_document.to_json добавляет коренная нота, называемая «amazons3» (имя контроллера) вокруг JSON, чего я не хочу. Мне просто нужно закодировать чистый json из запроса.
Любая помощь была бы высоко оценена!
Ваш ответ находится здесь [http://stackoverflow.com/questions/6515436/rails-3-1-include-root-in-json][1] [1]: http://stackoverflow.com/questions/6515436/rails-3-1-include-root-in-json – techvineet
Спасибо за указание мне wrap_parameters, если я изменю, что он работает, но мне нужно wrap_parameters всюду в моем приложении .. просто не в этом конкретном методе. Что-нибудь я могу с этим поделать? – 502502