这感觉应该很简单,但谷歌搜索了一个小时后我无法理解这一点。
我正在将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.except(:action,:controller)“清理”params,但是 policy_document.to_json 会添加一个名为'的根音符'围绕JSON的amazons3'(控制器名称),我不想要。我只需要从请求中编码纯json。
任何帮助都将受到高度赞赏!
答案 0 :(得分:0)
class Api::Amazons3Controller < Api::BaseController
self.include_root_in_json = false
end
答案 1 :(得分:0)
试试这个
配置/初始化/ wrap_parameters.rb
if defined?(ActiveRecord)
ActiveRecord::Base.include_root_in_json = false
end
答案 2 :(得分:0)
我可以通过添加:
来禁用此控制器的参数包装class Api::Amazons3Controller < Api::BaseController
wrap_parameters format: []