覆盖确认控制器时设计范围视图

时间:2012-07-13 03:49:29

标签: ruby-on-rails devise

我在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'}

新控制器工作正常,但我的作用域视图不再被识别。而不是渲染我的范围视图,正在呈现设计默认视图。如果我停止使用自定义控制器,我的范围视图将再次开始工作。

在使用客户控制器时,我是否遗漏了一些影响作用域视图的配置设置?

1 个答案:

答案 0 :(得分:5)

不确定这是否可行,因为我没有使用作用域视图,但是在覆盖默认设计注册视图和控制器时遇到了类似的问题。

对我来说,我必须确保我的视图的父目录与新的设计控制器具有相同的名称,一切正常。

即。 devise_for :users, :controllers => { :registrations => "app_registrations" } 然后我的自定义控制器在views/app_registrations/new.html.erb

是否将视图移至views/users/app_confirmations/new.html.erb帮助?