如何在RubyonRails中从一个应用程序调用另一个应用程序中的方法

如何在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响

我想调用该方法并从RubyonRails技术中的另一个应用程序获取应用程序中的响应,但这里存在跨站点脚本问题。所以,我可以我解决这个问题,请帮助我,这将是伟大的

现在我想从这个运行在edupdu.com域中的应用程序调用上述方法

但它将被重定向到video_tak.com应用程序。 我想调用get_course方法并在内部获取@course对象,而不重定向到另一个站点


提前感谢。

跨域AJAX确实是一个问题,但没有一个问题无法解决。在
get\u course
方法中,可以将课程对象作为JSON响应返回,如下所示:

render json: @course
从那时起,您可以通过JavaScript(AJAX)检索课程,这里您应该使用JSONP,或者通过发出httpget请求在Rails内部检索课程

  • AJAX与JSONP

    还有JSONP(带填充的JSON),它是JavaScript程序的一种通信技术,用于提供从不同域中的服务器请求数据的方法。看看 的文档,并向下滚动到JSONP部分

    如果URL包含字符串
    “callback=?”
    (或类似字符串,如 服务器端API),请求被视为JSONP。见 有关更多详细信息,请讨论
    $.ajax()
    中的
    jsonp
    数据类型

  • HTTP获取请求

    只需使用
    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)