Rails在AJAX请求期间阻止布局

时间:2012-07-02 01:11:56

标签: ruby-on-rails-3

我已经四处寻找并且无法为这种类型的机制找到解决方案。我想在Rails中正常加载所有页面,但每当我执行ajax请求时,我只想返回没有布局的页面。因此,每当我进行ajax请求时,我都可以在这些行上附加?page=true或其他内容,并让Rails返回没有布局的页面。

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

感谢您的帮助!

最终解决方案工作代码:

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

show方法为例

def show
    # code beforehand

    respond_to do |format|
        format.html { render :layout => !request.xhr? }
        # other formats
    end
end

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

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

1 个答案:

答案 0 :(得分:9)

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