Ajax 全局覆盖渲染方法Sinatra中的默认布局选项

Ajax 全局覆盖渲染方法Sinatra中的默认布局选项,ajax,sinatra,erb,Ajax,Sinatra,Erb,我正在使用AJAX从视图加载div内容。我想在我的erb方法if request.xhr中设置:layout=>false?这是真的。我有: get '/' do erb :index, :layout => !request.xhr? end 在我所有的路线上。。。但是这个(:layout=>!request.xhr?)变成了重复,我想把它擦干 你建议我如何补救?我应该打开Sinatra::Base并覆盖render方法吗?如果是,怎么做?有没有一种好方法可以编写一个before过

我正在使用AJAX从视图加载div内容。我想在我的erb方法if request.xhr中设置:layout=>false?这是真的。我有:

get '/' do
  erb :index, :layout => !request.xhr?
end
在我所有的路线上。。。但是这个(:layout=>!request.xhr?)变成了重复,我想把它擦干

你建议我如何补救?我应该打开Sinatra::Base并覆盖render方法吗?如果是,怎么做?有没有一种好方法可以编写一个before过滤器来检查传入的请求是否是AJAX请求?我觉得我已经尽了我所能,但仍然没有得到所需的输出:layout=>false if request.xhr?是真的


如果您有任何想法,我们将不胜感激:)

编写了一个助手方法来干涸代码(简单的解决方案,但我没有立即想到这一点):

现在,索引路由如下所示:

 get '/' do
   render_erb :index
 end

编写了一个助手方法来干涸代码(简单的解决方案,困惑的是我没有立即想到这一点):

现在,索引路由如下所示:

 get '/' do
   render_erb :index
 end

您也可以使用
之前的
过滤器,或在
配置中设置布局:

configure :production, :development do
    set :layout, !request.xhr?
end

# or

before do
    set :layout, !request.xhr?
end

您也可以使用
之前的
过滤器,或在
配置中设置布局:

configure :production, :development do
    set :layout, !request.xhr?
end

# or

before do
    set :layout, !request.xhr?
end