在控制器过滤器中禁用布局渲染

Disable layout rendering in controller filter

使用 pjax,如果 request.headers['X-PJAX'] 为真,则尝试禁用布局。

有没有办法设置一个过滤器来执行此操作,而不是将此逻辑放在我的所有路由中?

after_filter lambda {
  if request.headers['X-PJAX']
    # disable rendering with layout
  end
}

def show
  render layout: application
end

以下应该有效

SomeController < ApplicationController
  layout choose_layout

  def actions
  .
  .
  .
private
  def choose_layout
    request.headers['X-PJAX'].present? ? false : 'application'
  end
end

如果您只使用应用程序布局,我想您可以将它放在应用程序控制器中,让它自动应用于所有控制器。