我在OSX上使用Devise 2.0.0和Rails 3.2.3。
是否可以同时覆盖Devise控制器和Devise视图?
我使用位于views/users/confirmations/new.html.erb
的我自己的作用域视图成功覆盖了确认/新视图。范围内的视图工作正常。
然后我发现有必要用我自己的控制器Devise::ConfirmationsController
覆盖AppConfirmationsController
,以便自定义after_confirmation_path_for方法以返回我自己的自定义路径。
class AppConfirmationsController < Devise::ConfirmationsController
protected
def after_confirmation_path_for(resource_name, resource)
confirmed_app_custom_path
end
end
我改变了路线,以便使用我的自定义控制器
devise_for :users, :controllers => {:confirmations => 'app_confirmations'}
新控制器工作正常,但我的作用域视图不再被识别。而不是渲染我的范围视图,正在呈现设计默认视图。如果我停止使用自定义控制器,我的范围视图将再次开始工作。
在使用客户控制器时,我是否遗漏了一些影响作用域视图的配置设置?
答案 0 :(得分:5)
不确定这是否可行,因为我没有使用作用域视图,但是在覆盖默认设计注册视图和控制器时遇到了类似的问题。
对我来说,我必须确保我的视图的父目录与新的设计控制器具有相同的名称,一切正常。
即。 devise_for :users, :controllers => { :registrations => "app_registrations" }
然后我的自定义控制器在views/app_registrations/new.html.erb
是否将视图移至views/users/app_confirmations/new.html.erb
帮助?