kindofgreat
kindofgreat

Reputation: 900

devise won't redirect to after_sign_up_path when using customized devise routes

I invoke the after_sign_up_path_for(resource) by defining it in an inherited registrations_controller:

class RegistrationsController < Devise::RegistrationsController

  protected

  def after_sign_up_path_for(resource)
    new_user_profile_path(resource)
  end

end

This redirect works fine if I don't customize the routes. however, when I do, it no longer works. My routes file has:

devise_for :users, skip: [:sessions], controllers: { registrations: "registrations" }

devise_scope :user do
  get 'signin' => 'devise/sessions#new', as: :new_user_session
  post 'signin' => 'devise/sessions#create', as: :user_session
  delete 'signout' => 'devise/sessions#destroy', as: :destroy_user_session
  get 'signup' => 'devise/registrations#new', as: :new_user_registration
  post 'signup' => 'devise/registrations#create', as: :user_registration
  root to: 'pages#home'
end

Specifically, the post 'signup' => 'devise/registrations#create', as: :user_registration line messes things up. If that's not there, it works fine. However, if that's not there, then when registration fails due to validation error, the URL defaults to /users rather than /signup, which is an undesired behavior.

Anyone know if this is something I am doing wrong or if there's a bug in devise?

Upvotes: 0

Views: 409

Answers (2)

Jos&#233; Valim
Jos&#233; Valim

Reputation: 51349

The issue with your custom routes is that you are pointed back to Devise controllers:

post 'signup' => 'devise/registrations#create', as: :user_registration

That obviously is not going to work. Point to your own controller instead:

post 'signup' => 'registrations#create', as: :user_registration

Upvotes: 1

Magicmarkker
Magicmarkker

Reputation: 1063

Just briefly looking at your code provided, I don't think the route you want is new_user_profile_path. You probably want user_profile_path, can you run rake routes and paste the output here?

Upvotes: 0

Related Questions