ROR:发送一个对象作为回应

时间:2013-11-29 14:57:21

标签: ruby-on-rails ruby

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

App A

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

和App B

details = get_details //returns a hash
respond_with details

但它不起作用。我甚至可以做什么?有没有办法可以将此哈希放在我的回复中? 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

解决方案#1

如果您使用respond_with,还需要指定应用应响应的格式。为此,您应该使用respond_to方法。

示例:

class TestController < ApplicationController
    respond_to :json

    def index
        details = get_details
        respond_with(details)
    end
end

同时检查this good article关于respond_to方法。

解决方案#2

在控制器操作中使用render json: {...}

示例:

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

<小时/> 在您的应用中,response.body将包含一个字符串,其中包含应用B中的数据。因此您需要解析该字符串。

在您的应用中:

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)

答案 1 :(得分:0)

执行此操作的rails方法是使用JSON作为交换格式。看看如何使用它的指南:http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-json

也可以使用ActiveResource进行此类通信。它允许直接访问rails API。