lpp*_*ier 6 embed ruby-on-rails
我希望将我使用Ruby on Rails编码的网页作为可嵌入的后端,以便用户能够通过复制和粘贴一些嵌入代码轻松共享它.(很像YouTube嵌入代码,但对于网页而言)有人可以指点我的教程或大致方向如何去做吗?我打算在Joomla CMS中嵌入我的网页.
非常感谢.
码头.
sub*_*ing 16
假设您要为移动应用商店创建一个Widget.该小部件允许在任何网页中嵌入某个应用的信息.
如果我们使用script
标记,嵌入代码可能如下所示:
<script src="http://my_appstore.com/apps/1234.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
其中1234将是我们想要嵌入的特定应用程序的ID.
如果我们使用iframe
标记,则放入其他网页的代码可能如下所示:
<iframe src="http://my_appstore.com/apps/1234" width="500" height="200" frameborder="0"></iframe>
Run Code Online (Sandbox Code Playgroud)
我们必须首先决定使用哪种标签.使用和iframe
标记更直接,但我们仅限于使用iframe.使用iframe并不是一个糟糕的选择,但如果将其分发给第三方网页,您将无法在之后进行更改.相反,最好使用script
将插入iframe 的标记.如果您之后选择这样做,此标记还允许您切换到将内容直接嵌入页面中.
插入iframe意味着必须修复内容的比例,并且不能更改以适应父窗口中的不同窗口大小.直接嵌入您的内容没有这个问题,但您必须非常小心CSS并为所有元素添加样式,否则它们将继承主页样式.除非您使用JSONP,否则直接嵌入您的内容然后进行AJAX调用可能会产生跨浏览器请求问题.
让我们首先使用Sinatra创建一个简单的网页,我们将使用它来嵌入我们的Rails Widget:
mkdir host_page
cd host_page
Run Code Online (Sandbox Code Playgroud)
使用文本编辑器host.rb
在host_page
文件夹中创建文件:
# host.rb
require 'sinatra'
get '/' do
erb :index
end
Run Code Online (Sandbox Code Playgroud)
创建index.erb
并启动host_page:
mkdir views
cat '<script src="http://localhost:3000/apps/1234.js" type="text/javascript"></script>' > views/index.erb
ruby host.rb
Run Code Online (Sandbox Code Playgroud)
现在,如果我们访问,http://localhost:4567/
我们什么都看不到,但很快就会有一个小部件.
现在让我们创建将嵌入的rails应用程序.从项目的新文件夹开始,执行以下操作:
rails new widget
cd widget/
rails g controller apps
rm app/assets/javascripts/apps.js.coffee
Run Code Online (Sandbox Code Playgroud)
添加所需的路线:
# config/routes.rb
MyApp::Application.routes.draw do
resources :apps
end
Run Code Online (Sandbox Code Playgroud)
编辑您的应用控制器:
# app/controllers/apps_controller.rb
class AppsController < ApplicationController
def show
@mobile_app = {
:title => "Piano Tutorial",
:descr => "Learn to play piano with this interactive app",
:rating => "*****"
}
end
end
Run Code Online (Sandbox Code Playgroud)
在那个控制器中,我们总是返回相同的应用程序.在实际情况中,我们将有一个模型和控制器,它将从params中找到的模型ID中检索适当的应用程序数据.
创建您的javascript视图并启动服务器:
echo 'document.write("<h3><%=@mobile_app[:title]%></h3><p><%=@mobile_app[:descr]%></p><p><em><%=@mobile_app[:rating]%></em><p>");' > app/views/apps/show.js.erb
rails server
Run Code Online (Sandbox Code Playgroud)
就是这样.转到http://localhost:4567/
并查看您的小部件.
如果您想使用iframe,请用以下内容替换show.js.erb
文件的内容:
document.write("<%=escape_javascript(content_tag(:iframe, '', :src => app_url(params['id'])).html_safe)%>");
Run Code Online (Sandbox Code Playgroud)
在这里我们使用a,content_tag
但它也可以通过<iframe>
像以前一样使用标签以类似于前一个的方式完成.
显然,如果我们使用iframe,我们会进行两次调用,一次是渲染iframe,另一次是加载iframe的内容.对于第二次调用,我们仍然缺少html视图.只需创建这样的视图:
# app/views/apps/show.html.erb
<h3><%=@mobile_app[:title]%></h3>
<p><%=@mobile_app[:descr]%></p>
<p><em><%=@mobile_app[:rating]%></em><p>
Run Code Online (Sandbox Code Playgroud)
现在,您可以再次指向http://localhost:4567/
并在iframe中查看您的小部件.
归档时间: |
|
查看次数: |
4995 次 |
最近记录: |