Ruby on rails 如何让ruby返回要在rails控制器中使用的json响应

Ruby on rails 如何让ruby返回要在rails控制器中使用的json响应,ruby-on-rails,json,ruby,ruby-on-rails-5,net-http,Ruby On Rails,Json,Ruby,Ruby On Rails 5,Net Http,我正在使用一个Api,到目前为止,我能够发送请求和接收响应,但我希望ruby代码发送json响应和消息,可以从我的rails控制器访问这些响应和消息,这样我就可以获得简单的表单来呈现错误或成功消息,还可以处理来自rails控制器的重定向,我还想将响应中的事务细节保存到模型中,以下是我的lib代码 class SimplePay require 'net/https' require 'uri' require 'json' def self.pay(api_key, token

我正在使用一个Api,到目前为止,我能够发送请求和接收响应,但我希望ruby代码发送json响应和消息,可以从我的rails控制器访问这些响应和消息,这样我就可以获得简单的表单来呈现错误或成功消息,还可以处理来自rails控制器的重定向,我还想将响应中的事务细节保存到模型中,以下是我的lib代码

class SimplePay
  require 'net/https'
  require 'uri'
  require 'json'

  def self.pay(api_key, token, amount, amount_currency, status)
    uri = URI.parse('https://checkout.simplepay.ng/v2/payments/card/charge/')
    header = {'Content-Type': 'text/json'}
    data = {
        'token': token,
        'amount': amount,
        'amount_currency': amount_currency
    }
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.request_uri, header)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    request = Net::HTTP::Post.new(uri.request_uri, header)
    request.basic_auth(api_key, '')
    request.set_form_data(data)

    response = http.request(request)
    res = JSON.parse(response.read_body)
    response_code =  res['response_code']
    if response.kind_of? Net::HTTPSuccess
      if response_code.eql? 20000
        puts 'success'
      else
        puts 'Failed'
      end
    elsif status.eql? true
      puts 'Success But Not Charged'
    elsif status.eql? false
      raise error 'Failed To Charge Card'
    elsif response.kind_of? Net::HTTPBadRequest
      raise error 'Failed 400'
    elsif response.kind_of? Net::HTTPError
      raise error 'Failed 404'
    else
      raise error 'Unknown Error'
    end
  end
end

如何实现这一点?

我会说,向控制器发送一个
散列,然后当您发送它时,只需执行一个
。如果您返回一个json编码字符串(即“success”),to_json
将使其成为json

。to_json将作为响应主体发送。顺便问一下,您确定
20000
是正确的状态码吗?不是
200
?我想说发送一个
散列
到控制器,然后当您发送它时,只需执行一个
。to_json
将把它变成一个json。@aks谢谢worked@codex我把它作为答案贴了出来,仍然在为我返回html