Search code examples
ruby-on-railsruby-on-rails-3ruby-on-rails-3.1deviseactiveadmin

Devise + Active Admin Redirect


I am having trouble setting up the redirect for my application. Users should go to their profile (users/show) and admins should go to the admin dashboard.. How do i set this up?

Currently getting the following error:

 NameError in ActiveAdmin::Devise::SessionsController#create

    undefined local variable or method `admin' for #<ActiveAdmin::Devise::SessionsController:0x007febe12667e8>

Application controller

def after_sign_in_path_for(resource_or_scope)
   if admin
   redirect_to admin_dashboard_path
  else
   @user
  end
 end
end

Solution

  • You don't have an admin variable to access, you need to check what the parameter is that you are being given.

    def after_sign_in_path_for(resource)
      stored_location_for(resource) ||
        if resource.is_a?(Admin)
          admin_dashboard_path
        else
          user_path(resource)
        end
    end
    

    You should also not redirect inside this method, it should only return a path that devise can use.