Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ROR:发送对象作为响应_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails ROR:发送对象作为响应

Ruby on rails ROR:发送对象作为响应,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有2个ruby on rails应用程序。在应用程序A中,我发布应用程序B的一些数据(以散列形式)。然后,我希望应用程序B在响应中将此数据的散列(经过一些修改)发送回应用程序a 我已经尝试了下面的代码应用程序A response = Net::HTTP.post_form(uri, params) quotes.push(response.body) 和在应用程序B中 details = get_details //returns a hash respond_with details 但

我有2个ruby on rails应用程序。在应用程序A中,我发布应用程序B的一些数据(以散列形式)。然后,我希望应用程序B在响应中将此数据的散列(经过一些修改)发送回应用程序a
我已经尝试了下面的代码

应用程序A

response = Net::HTTP.post_form(uri, params)
quotes.push(response.body)
和在应用程序B中

details = get_details //returns a hash
respond_with details
但它不起作用。我所做的可能吗?有没有一种方法可以将这个散列放入我的响应中?
任何帮助都将不胜感激。rails的方法是使用JSON作为交换格式。请参阅指南,了解如何使用:

也可以用于这种通信。它允许直接访问rails API。

解决方案#1 如果将
respond_与
一起使用,则还需要指定应用程序应响应的格式。为此,您应该使用方法

例如:

class TestController < ApplicationController
    respond_to :json

    def index
        details = get_details
        respond_with(details)
    end
end
class TestController < ApplicationController
     def index
        details = get_details
        render json: details
    end
end

在应用程序A
response.body
中将包含一个字符串,其中包含来自应用程序B的数据。因此,您需要解析该字符串

在应用程序A中:

require 'json' # this is unnecessary if app A is a Rails app

response = Net::HTTP.post_form(uri, params)
parsed_response = JSON.parse(response.body)
quotes.push(parsed_response)

这不是“Rails”的方式,它更大,现在是web方式。支持JSON的框架和语言实现了跨语言兼容性。Rails这样做是因为这个原因。@theTinMan您也可以使用XML:)是的,但是XML和/或使用SOAP是2000年的事。JSON更加紧凑,并且可以立即使用。我们也可以使用CSV。json对象将如何显示在响应中?在回答中。身体还是其他地方?是的,没错。response.body将包含数据。但是你需要解析它。我已经更新了我的答案,请检查。