如何在RubyonRails中从一个应用程序调用另一个应用程序中的方法
我想调用该方法并从RubyonRails技术中的另一个应用程序获取应用程序中的响应,但这里存在跨站点脚本问题。所以,我可以我解决这个问题,请帮助我,这将是伟大的 现在我想从这个运行在edupdu.com域中的应用程序调用上述方法 但它将被重定向到video_tak.com应用程序。 我想调用get_course方法并在内部获取@course对象,而不重定向到另一个站点如何在RubyonRails中从一个应用程序调用另一个应用程序中的方法,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想调用该方法并从RubyonRails技术中的另一个应用程序获取应用程序中的响应,但这里存在跨站点脚本问题。所以,我可以我解决这个问题,请帮助我,这将是伟大的 现在我想从这个运行在edupdu.com域中的应用程序调用上述方法 但它将被重定向到video_tak.com应用程序。 我想调用get_course方法并在内部获取@course对象,而不重定向到另一个站点 提前感谢。跨域AJAX确实是一个问题,但没有一个问题无法解决。在get\u course方法中,可以将课程对象作为JSON响
提前感谢。跨域AJAX确实是一个问题,但没有一个问题无法解决。在
get\u course
方法中,可以将课程对象作为JSON响应返回,如下所示:
render json: @course
从那时起,您可以通过JavaScript(AJAX)检索课程,这里您应该使用JSONP,或者通过发出httpget请求在Rails内部检索课程
“callback=?”
(或类似字符串,如
服务器端API),请求被视为JSONP。见
有关更多详细信息,请讨论$.ajax()
中的jsonp
数据类型
Net::HTTP
类:
require 'net/http'
require 'json'
url = URI.parse('http://video_tak.com/courses/get_course/1')
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) do |http|
http.request(req)
end
course_json = JSON.parse(res.body)
如果您为您的模型提供了将JSON转换为您的域对象的方法,那么您可以从中获取它RPC 您还可以使用RPC在不同的Ruby进程之间调用方法,尽管我建议您这样做,但至少我不想忽略它。有几个远程过程调用(RPC)库。Ruby标准库提供了,但也有基于RubyonRails的实现,例如gem,它允许您基于协议或使用JSON的替代协议实现RPC
在搜索Rails RPC时,您可能会发现更多的库。无论您选择哪个库,具体的解决方案都会有所不同。我认为您不想这样做。您可以通过JSON(p)获取课程
render json: @course
require 'net/http'
require 'json'
url = URI.parse('http://video_tak.com/courses/get_course/1')
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) do |http|
http.request(req)
end
course_json = JSON.parse(res.body)