一个系统上的控制器希望将数据发送到另一个系统上的控制器

时间:2012-01-28 05:55:54

标签: ruby controller

我在一个系统上有一个ruby on rails app(使用ipaddress ip_a),在另一个系统上运行相同的代码(使用ipaddress ip_b)

因此,两者都有一个名为Grid

的模型

我希望用ip_b Grid模型的信息更新ip_a的Grid模型。

我怎样才能做到这一点?

我尝试使用ActiveRecord的建立连接直接更新Grid模型。 我想知道我是否可以通过post将ip_a的控制器中的对象发送到ip_b的控制器。

任何人都知道怎么做 ?

1 个答案:

答案 0 :(得分:0)

我不确定这是最好的解决方案,但您可以使用JSON。 例如:

grids_controller.rb

def sync
  grid = Grid.find(params[:id])
  if grid
    client = HTTPClient.new
    json_params = client.get_content("http://your_ip_b_url/grid/#{params[:id]}.json")
    grid.update_attributes(ActiveSupport::JSON.decode(json_params))
  end
  respond_to do |f|
    f.js #in sync.js.erb you just modifying your index.html.erb to show that action is completed
  end
end

def show
  grid = Grid.find(params[:id])
  respond_to do |f|
    f.json { render :json => grid}
  end
end

在index.html.erb中,您只需在@grids列表中创建一个可以远程同步操作的链接。

当然你需要重构那个,并且可能会改变一些事情,但我认为这是一个开始。