Rails在AJAX请求期间阻止布局

Kay*_*lly 13 ruby-on-rails-3

我已经四处寻找并且无法找到这种机制的解决方案.我想在Rails中正常加载所有页面,但每当我执行ajax请求时,我只想返回没有布局的页面.因此,每当我做一个ajax请求时,我可以?page=true在这些行上附加一个或者某个东西,让Rails只返回没有布局的页面.

这可能吗?有没有更好的方法来做到我错过了?

谢谢你的帮助!

最终解决方案工作代码

在控制器中,您需要做的就是format.htmlrespond_to块中附加一点逻辑.

show例如,在该方法中

def show
    # code beforehand

    respond_to do |format|
        format.html { render :layout => !request.xhr? }
        # other formats
    end
end
Run Code Online (Sandbox Code Playgroud)

就是这样!在AJAX请求期间阻止布局!

注意:由于smathy对他的回答的评论,这进一步简化了.我最初有format.html { render :layout => nil if request.xhr? } 这个解决方案同样适用,但smathy的修改使它更简单.

sma*_*thy 9

您不需要添加该参数,request.xhr?当它是Ajax请求时,将在控制器中返回true.只需使用它来决定是否渲染布局.

  • 好的解决方案,是的.另一种方法是使用布尔本身 - 但是否定了.例如.我会这样做:`render:layout =>!request.xhr?` (3认同)