2011-12-18 76 views
1

我怎么能创建动作控制器,它确实像一个mixin:ActionController的密新

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

(我不能继承的ApplicationController,因为我使用的宝石(设计),这是绑的ActionController 。mixin似乎更适合)

我创建了一个名为“XHRController”的模块,并在application.rb中使用了“ApplicationController :: Base.include XHRController”,但它在任何使用“layout”时出错, “before_filter”等未定义。

回答

1

所以,看起来你正在寻找决定使用哪种布局。如果这是一个AJAX请求并且使用应用程序,那么您希望使用'minimal'。并且您希望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

+0

感谢杰西。这是它的一部分,我也使用before_filter插入自定义标题。 – mahemoff 2011-12-19 07:09:39

相关问题