我有一个有多种布局的Sinatra应用程序,一个用于管理面板,一个用于公共。我想在视图中将它们隔离到自己的子目录中:
views/
views/layout.erb (for public)
views/auth/
views/auth/layout.erb (for admin)
但我收到了错误。 config.ru:
require 'sinatra'
get "/" do
erb :layout
end
get "/auth" do
erb :layout => :'auth/layout'
end
答案 0 :(得分:0)
首先,第二次“erb”调用是错误的。将其更改为:
erb :layout, :layout_options => { :views => 'views/auth' }
如果你想使用Sinatra的“经典风格”,你展示的代码不应该在config.ru
。将代码从config.ru
移至另一个文件,例如app.rb
。更正第二个“erb”电话,app.rb
将包含:
# app.rb
require 'sinatra'
get "/" do
erb :layout
end
get "/auth" do
erb :layout, :layout_options => { :views => 'views/auth' }
end
像这样运行:ruby app.rb
。默认情况下,它将在端口4567上启动本地服务器。
现在,网址http://localhost:4567
和http://localhost:4567/auth
应该有效。
请记住,您不应直接呈现layout.erb
文件。它用于包装您的视图。查看named export了解更多示例。