是否可以将 Ruby on Rails 应用程序的部分内容渲染到另一个应用程序?
我有两个 RoR3 应用程序(APP1 和 APP2)
- www.subdomain1.example.com
- www.subdomain2.example.com
,我想在 APP1 上显示em>来自APP2的一些观点。
我尝试使用“Net::HTTP”请求(APP1 中的代码)来执行此操作
Net::HTTP.get( URI.parse("http://www.subdomain2.example.com/users/new") )
,但响应未评估为 HTTP 代码。除此之外,我不知道是否还有其他技术可以更简单地完成我想要的事情。
那么,是否可以使用在同一 RoR 应用程序中渲染局部的常见且简单的方法来渲染从 APP1 到 APP2 的局部?
示例:
render :partial => "/users/new"
如果可以,我该怎么做?
I have two RoR3 applications (APP1 and APP2)
- www.subdomain1.example.com
- www.subdomain2.example.com
and I want to show on APP1 some views from APP2.
I tried to do that using a 'Net::HTTP' request (code in APP1)
Net::HTTP.get( URI.parse("http://www.subdomain2.example.com/users/new") )
but the response is not evaluated as HTTP code. Among other things I do not know if there are other techniques to do what I want in more easy way.
So, is it possible to render partials from APP1 to APP2 using the common and easy approach of rendering partials in the same RoR application?
Example:
render :partial => "/users/new"
If so, how can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在这里,试试这个:
在你看来:
它会起作用。但只有一个问题:如果网站包含图像、其他页面或其他任何内容的相对链接,这些链接将无法正确显示。尝试此操作以查看一堆空白图像:
另外,请注意,如果您不拥有所包含的 URL,您将受到跨站点脚本编写怪异的影响。
Here, try this:
In your view:
It will work. Just one problem, though: if the site contains relative links to images, other pages, or anything else, those links will not be shown correctly. Try this to see a bunch of blank images:
Also, BE WARNED that if you don't own the URL you're including, you will be subject to cross-site scripting weirdness.
如果两个应用程序共享一个文件系统或可以访问共享文件系统,那么您可以直接通过文件路径引用部分文件系统。来自 Rails 渲染指南:
If the two applications share a filesystem or have access to a shared filesystem, then you can reference a partial directly by file path. From the Rails guide on rendering:
创建一个包含任何共享代码(即部分代码)的 gem 可能会更谨慎,这样两个应用程序都可以使用它。
It might be more prudent to create a gem that has any shared code (ie. partials) in it so both apps can use it.