是否有可能将Ruby on Rails应用程序中的部分内容呈现给另一个应用程序?

时间:2011-01-10 15:57:37

标签: ruby-on-rails ruby rendering partial-views

我有两个RoR3应用程序( APP1 APP2

  • www.subdomain1.example.com
  • www.subdomain2.example.com

我想在 APP1 上显示来自 APP2 的一些观点。

我尝试使用'Net :: HTTP'请求( APP1 中的代码)

Net::HTTP.get( URI.parse("http://www.subdomain2.example.com/users/new") )

但响应未评估为HTTP代码。除其他事项外,我不知道是否还有其他技术可以更轻松地完成我想要的工作。

那么,是否可以使用在同一个RoR应用程序中渲染部分的常见且简单的方法,将部分从 APP1 渲染到 APP2

示例:

render :partial => "/users/new"

如果是的话,我该怎么做?

3 个答案:

答案 0 :(得分:3)

在这里,试试这个:

module ApplicationHelper
  require 'open-uri'

  def render_url(url)
    open url do |f|
      f.read.html_safe   # remove the 'html_safe' if you're on Rails 2.x
    end
  end
end

在您看来:

<%= render_url 'http://ilikestuffblog.com/' %>

它会起作用。但只有一个问题:如果网站包含图像,其他页面或其他任何内容的相对链接,那么这些链接将无法正确显示。试试看这一堆空白图片:

<%= render_url 'http://www.ducklet.com/' %>

另外,请注意,如果您不拥有所包含的网址,则会受到跨网站脚本编写的影响。

答案 1 :(得分:1)

如果两个应用程序共享文件系统或可以访问共享文件系统,则可以直接通过文件路径引用部分文件系统。从渲染的Rails指南:

  

2.2.4渲染任意文件

     

render方法也可以使用视图   那完全不在你的身边   应用程序(也许你正在分享   两个Rails应用程序之间的视图):

     

渲染   “/ U /应用/ warehouse_app /电流/应用/视图/产品/显示”

     

Rails确定这是一个文件   因为领先的斜线而渲染   字符。要明确,您可以使用   :file选项(这是必需的   在Rails 2.2及更早版本中):

     

渲染:文件=&gt;
  “/ U /应用/ warehouse_app /电流/应用/视图/产品/显示”

     

:file选项采用绝对值   文件系统路径。当然,你需要   拥有你所拥有的观点的权利   用于呈现内容。

答案 2 :(得分:0)

创建一个包含任何共享代码(即部分代码)的gem可能更为谨慎,因此两个应用程序都可以使用它。