我有一个负责处理我的用户的非现场付款的宝石。给定金额和支付网关,它确定如何重定向到网关的支付页面。重定向可以通过GET或自动提交的POST表单,以及各种标题。
我需要它与Sinatra和其他Rack框架兼容,因此它返回一个Rack :: Response。
但是,我无法告诉我的Rails控制器这个 我想要发送给用户的响应,并且它应该只返回它。
我可以轻松地将它集成到Sinatra中:
get '/pay' do
rack_response = Rack::Response.new(['Hello'], 200, {'Content-Type' => 'text/plain'})
return rack_response.to_a
end
以下似乎适用于Rails 4:
# test_controller.rb
def pay
rack_response = Rack::Response.new(['Hello'], 200, {'Content-Type' => 'text/plain'})
self.response = ActionDispatch::Response.new(*rack_response.to_a)
self.response.close
return
end
但是,我无法找到一种优雅的方式使其在 Rails 3.2 应用中运行。我错过了什么吗?
答案 0 :(得分:3)
这似乎适用于Rails 3.2应用程序
# test_controller.rb
def pay
rack_response = Rack::Response.new(['Hello'], 200, {'Content-Type' => 'text/plain'})
self.response_body = rack_response.body
self.status = rack_response.status
self.response.headers = rack_response.headers
return
end
虽然看起来有点不稳定,但是如果有人有更优雅的方式我会接受它