我在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
但它不起作用。我甚至可以做什么?有没有办法可以将此哈希放在我的回复中? 任何帮助将不胜感激
答案 0 :(得分: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
方法。
在控制器操作中使用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。