【问题标题】:How do I override a Devise 1.1.rc2 controller?如何覆盖 Devise 1.1.rc2 控制器?
【发布时间】:2010-07-14 15:59:59
【问题描述】:

我想在我的应用程序中添加使用 JSON 格式和其他一些特定内容注册的选项。我尝试添加自己的 RegistrationsController 控制器,然后将路由设置为如下所示:

devise_for :users, :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }
match 'signin', :to => 'devise/sessions#new', :as => "new_user_session"
match 'signout', :to  => 'devise/sessions#destroy', :as => "destroy_user_session"
match 'signup(.:format)', :to => 'registrations#new', :as => "new_user_registration"

我在 app/controllers/registrations_controller.rb 中的RegistrationsController 如下所示:

class RegistrationsController < Devise::RegistrationsController
  prepend_view_path "app/views/devise"
  def create
    # My custom implementation
  end
end

无论格式如何,它总是抛出以下错误

AbstractController::ActionNotFound (AbstractController::ActionNotFound):
/usr/local/Cellar/Gems/1.8/gems/devise-1.1.rc2/lib/devise/controllers/internal_helpers.rb:57:in `is_devise_resource?'
...

我什至尝试将注册控制器从 git 添加到 app/controllers/devise/registrations_controller.rb 并更改路由以指向该控制器,但这也不起作用。有人有想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    想通了!我试图覆盖注册控制器中的创建,但没有路由到它...愚蠢的错误。

    devise_for :users, :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }, :controllers => { :registrations => "registrations" }
    match 'signin', :to => 'devise/sessions#new', :as => "new_user_session"
    match 'signout', :to  => 'devise/sessions#destroy', :as => "destroy_user_session"
    get 'signup', :to => 'registrations#new', :as => "new_user_registration"
    post 'signup(.:format)', :to => 'registrations#create', :as => "create_user_registration"
    

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多