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

luc*_*nte 3 ajax ruby-on-rails

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

def show
  respond_to do |format|
    format.html { render layout: !request.xhr? }
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法使这个全球化,而不是必须在每个行动中写它?

编辑:

我试着把它放在after_filter评论中的建议中,但这给了我一个错误Render and/or redirect were called multiple times in this action.

Zaj*_*ajn 9

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

layout :set_layout

def set_layout
  request.xhr? ? false : 'your_layout' # layout is false for ajax requests
end
Run Code Online (Sandbox Code Playgroud)

  • 你可以将它缩短为`layout proc {false if request.xhr?}` (4认同)