ActionController Mixin - PullRequest
       8

ActionController Mixin

1 голос
/ 18 декабря 2011

Как я могу создать миксин для контроллера действий, который делает что-то вроде:

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

(я не могу создать подкласс ApplicationController, потому что я использую гем (Devise), который связан с ActionControllerМиксин кажется более подходящим в любом случае.)

Я создал модуль под названием «XHRController» и использовал «ApplicationController :: Base.include XHRController» в application.rb, но он вызывает ошибки при любом использовании «layout»"," before_filter "и т. д. как неопределенные.

1 Ответ

1 голос
/ 19 декабря 2011

Итак, похоже, вы решаете, какой макет использовать. И вы хотите использовать «минимальный», если это 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

Эта страница в вики устройства также имеет две другие опции: https://github.com/plataformatec/devise/wiki/Custom-Layouts-for-Devise/22d024556aec73c8b65b630bd11a2e8ff7d17eaa

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...