我已经四处寻找并且无法为这种类型的机制找到解决方案。我想在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的修改使它更简单。
答案 0 :(得分:9)
您不需要添加该参数,request.xhr?
将在您的控制器中返回true,这是Ajax请求。只需使用它来决定是否渲染布局。