1

次のようなアクションコントローラーのミックスインを作成するにはどうすればよいですか。

layout Proc.new { |controller|
  if controller.request.xhr?
    'minimal'
  else
    'application'
  end
}

(ActionController に関連付けられている gem (Devise) を使用しているため、ApplicationController をサブクラス化することはできません。とにかく、mixin の方が適しているようです。)

「XHRController」というモジュールを作成し、application.rb で「ApplicationController::Base.include XHRController」を使用しましたが、「layout」、「before_filter」などを未定義として使用するとエラーになります。

4

1 に答える 1

1

そのため、使用するレイアウトを決定しようとしているようです。また、AJAX リクエストの場合は「最小」を使用し、それ以外の場合はアプリケーションを使用します。また、Devise ビューもこの同じ決定木に従う必要があります。

次のようなものがあるようです:

class ApplicationController < ActionController::Base

  layout :layout_decision_by_request_type

  def layout_decision_by_request_type
    if request.xhr?
      'minimal'
    else
      'application'
    end
  end

end

devise wiki のこのページには、他にも 2 つのオプションがあります

于 2011-12-19T02:51:07.277 に答える