将Sinatra应用程序安装在rails应用程序内并共享布局

Mik*_*ike 23 rack ruby-on-rails sinatra ruby-on-rails-3

我想在我的rails应用程序中安装sinatra应用程序.但我希望这个人分享相同的布局.

iframe可以工作,但你还有其他想法吗?

谢谢

Hol*_*ust 38

你基本上需要做两件事:

你需要告诉Rails路由器某个URL路径是由另一个Rack应用程序处理的(在你的情况下是一个Sinata应用程序).这可以通过将其添加到routes.rb来完成:

match "/sinatra" => MySinatraApp, :anchor => false
Run Code Online (Sandbox Code Playgroud)

完成后,您可以像这样创建您的应用:

class MySinatraApp < Sinatra::Base
  get "/" do
    "Hello Sinatra World"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在的第二步是告诉你的Sinatra应用程序使用rails布局,默认情况下app/views/layouts/application.html.erbRails 3.1.默认情况下,Sinatra使用./views/layout.ext(ext作为您选择的模板系统的扩展).基本上,你必须告诉Sinatra

  1. 使用另一个目录来查找视图和布局而不是默认值 ./views
  2. 使用另一个模板文件作为默认布局.

两者都可以通过在sinatra应用程序中设置以下内容来实现:

set :views, "/path/to/your/railsapp/views"
set :erb, layout => :"layout/application" # or whatever rendering engine you chose
Run Code Online (Sandbox Code Playgroud)

  • 那么,也许你应该坚持使用Rails.Sinatra的美妙之处在于它没有在某些环境中不需要的东西.但是如果你已经拥有了你需要的基础设施(帮助者,插件......),那么将其抛在身后并没有什么意义.将Sinatra用于可以自行站立的区域. (2认同)