我想在sinatra中写一个方法来设置布局,比如
def admin_layout
set :layout, 'admin/layout'
end
我知道我可以做 set :erb, layout: :'main/layout'
之类的事情,或者为每个 Action 指定布局,例如
get 'admin/login' do
erb :'admin/login', layout: :'admin/layout'
end
但我想知道是否有一种方法可以将其抽象为一个方法,这样我就不需要为每条路线设置布局。我正在制作一个带有 main
站点然后是 admin
站点的应用程序,但是管理部分非常轻量级,只需登录并能够编辑帖子,所以我不是试图变得太疯狂但我当前的文件结构是这样的:
db/
models/
public/
views/
admin/
main/
app.rb
config.ru
最佳答案
定义布局参数:
def admin_layout
{:layout, 'admin/layout'}
end
然后你可以使用这个方法作为参数,比如
get 'admin/login' do
## do ......
erb :'admin/login', admin_layout
end
或者如果你想判断它将使用哪种布局,改变 admin_layout
功能,如:
def admin_layout
if request.path.start_with?('/admin')
{:layout, 'admin/layout'}
else
{:layout, 'layout'}
end
end
关于ruby - Sinatra设置布局的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080599/