How can I redefine Devise and Devise routes?

I am using Rails 4.0.2 and Devise 3.2.2 to handle user registration / authentication.

I have googled and search stackoverflow for answers, I cannot find something that can answer my question.

Below is the routes.rb code. I skipped all session routes and registration routes, but for some reason Devise is not using my custom registrations_controller.rb , because if so, it should redirect to / pages / success (see below my registrations_controller.rb)

routes.rb

App::Application.routes.draw do resources :posts resources :questions get "users/:id", to: "users#show" devise_for :users, :controllers => {:registrations => "registrations"}, :skip => [:sessions, :registrations] as :user do get 'login' => 'devise/sessions#new', :as => :new_user_session post 'login' => 'devise/sessions#create', :as => :user_session delete 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session end as :user do get '/' => 'devise/registrations#new', :as => :new_user_registration post 'register' => 'devise/registrations#create', :as => :user_registration end get "registrations/update" get "pages/home" get "pages/privacy" get "pages/terms" get "pages/success" end 

registrations_controller.rb

 class RegistrationsController < Devise::RegistrationsController protected def after_inactive_sign_up_path_for(resource) '/pages/success' end end 
+8
ruby-on-rails ruby-on-rails-4 devise
source share
1 answer

There are several potential problems you may have:


Skip

If you miss the registration functionality, I would suggest that this would not allow Devise to call your RegistrationsController ?

I personally would do this (correct the routes):

 #config/routes.rb root to: "users#index" (where ever your "logged-in" page is) devise_for :users, path: "", controllers: { sessions: "sessions", registrations: "registrations" }, path_names: { sign_in: 'login', password: 'forgot', confirmation: 'confirm', unlock: 'unblock', sign_up: 'register', sign_out: 'signout'} 

This will give you the routes you need and go to a page with a verified signature in your application, thus either showing the login or registration page for Devise


Definition

Another problem you may have is a mis-definition of your Devise registration controller. We use this code in a very recent development application:

 #app/controllers/registrations_controller.rb class RegistrationsController < ::Devise::RegistrationsController end 

Perhaps you could try using :: before the Devise::RegistrationsController see if it calls?

+11
source share

All Articles