Rails:全局关闭ajax格式的布局?

时间:2012-09-28 15:10:21

标签: ruby-on-rails ajax

在具有可以正常加载的页面或来自ajax(jQuery.load())的应用程序中,如何正确设置rails格式?现在我在每个动作中都使用以下代码:

def show
  respond_to do |format|
    format.html { render layout: !request.xhr? }
  end
end

有没有办法让这个全局化,而不是必须在每个动作中都写出来?

修改

我按照评论中的建议尝试将其放入after_filter,但这给了我Render and/or redirect were called multiple times in this action.

的错误

2 个答案:

答案 0 :(得分:9)

您可以在控制器顶部执行以下操作:

layout :set_layout

def set_layout
  request.xhr? ? false : 'your_layout' # layout is false for ajax requests
end

答案 1 :(得分:2)

可能每个人都知道。缺少“?”请求后的字符.xhr?。试试这个。

layout :set_layout

def set_layout
  request.xhr? ? false : 'your_layout'
end