2011-12-18 4 views
1

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

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

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

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

ответ

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 вики также имеет два других варианта: https://github.com/plataformatec/devise/wiki/Custom-Layouts-for-Devise/22d024556aec73c8b65b630bd11a2e8ff7d17eaa

+0

Спасибо Джесси. Это часть его, и я также использую before_filter для вставки настраиваемого заголовка. – mahemoff

Смежные вопросы