I have devise installed.
And I have a link: <%= link_to "Sign up", new_user_registration_path %>
When I installed ActiveAdmin (for existing model User
), this link stopped working:
undefined local variable or method `new_user_registration_path'
I used git diff for routes.rb
and here it is (added lines are black):
ActiveAdmin.routes(self)
devise_for :users
, ActiveAdmin::Devise.config
Also <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
now leads to /admin/logout
How can I solve this problem?
rake routes:
admin_dashboard /admin(.:format) {:action=>"index", :controller=>"admin/dashboard"}
admin_codes GET /admin/codes(.:format) {:action=>"index", :controller=>"admin/codes"}
POST /admin/codes(.:format) {:action=>"create", :controller=>"admin/codes"}
new_admin_code GET /admin/codes/new(.:format) {:action=>"new", :controller=>"admin/codes"}
edit_admin_code GET /admin/codes/:id/edit(.:format) {:action=>"edit", :controller=>"admin/codes"}
admin_code GET /admin/codes/:id(.:format) {:action=>"show", :controller=>"admin/codes"}
PUT /admin/codes/:id(.:format) {:action=>"update", :controller=>"admin/codes"}
DELETE /admin/codes/:id(.:format) {:action=>"destroy", :controller=>"admin/codes"}
admin_users GET /admin/users(.:format) {:action=>"index", :controller=>"admin/users"}
POST /admin/users(.:format) {:action=>"create", :controller=>"admin/users"}
new_admin_user GET /admin/users/new(.:format) {:action=>"new", :controller=>"admin/users"}
edit_admin_user GET /admin/users/:id/edit(.:format) {:action=>"edit", :controller=>"admin/users"}
admin_user GET /admin/users/:id(.:format) {:action=>"show", :controller=>"admin/users"}
PUT /admin/users/:id(.:format) {:action=>"update", :controller=>"admin/users"}
DELETE /admin/users/:id(.:format) {:action=>"destroy", :controller=>"admin/users"}
admin_comments GET /admin/comments(.:format) {:action=>"index", :controller=>"admin/comments"}
POST /admin/comments(.:format) {:action=>"create", :controller=>"admin/comments"}
new_admin_comment GET /admin/comments/new(.:format) {:action=>"new", :controller=>"admin/comments"}
edit_admin_comment GET /admin/comments/:id/edit(.:format) {:action=>"edit", :controller=>"admin/comments"}
admin_comment GET /admin/comments/:id(.:format) {:action=>"show", :controller=>"admin/comments"}
PUT /admin/comments/:id(.:format) {:action=>"update", :controller=>"admin/comments"}
DELETE /admin/comments/:id(.:format) {:action=>"destroy", :controller=>"admin/comments"}
new_user_session GET /admin/login(.:format) {:action=>"new", :controller=>"active_admin/devise/sessions"}
user_session POST /admin/login(.:format) {:action=>"create", :controller=>"active_admin/devise/sessions"}
destroy_user_session DELETE|GET /admin/logout(.:format) {:action=>"destroy", :controller=>"active_admin/devise/sessions"}
user_password POST /admin/password(.:format) {:action=>"create", :controller=>"active_admin/devise/passwords"}
new_user_password GET /admin/password/new(.:format) {:action=>"new", :controller=>"active_admin/devise/passwords"}
edit_user_password GET /admin/password/edit(.:format) {:action=>"edit", :controller=>"active_admin/devise/passwords"}
PUT /admin/password(.:format) {:action=>"update", :controller=>"active_admin/devise/passwords"}
root / {:controller=>"codes", :action=>"list"}
/:controller(/:action(/:id(.:format)))
I checked out old revision, and routes were:
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
One thing you might be missing is to declare your User model as 'registerable' to get the signup routes generated by Devise.
You should have something like this:
class User < ActiveRecord::Base
# Include devise modules
devise :database_authenticatable, :registerable, ...
I ran into this problem once and this is what solved it.
It seems that you are using the same model for both normal users and admin users. ActiveAdmin requires a separate model for admins. Try reverting the changes made by the generator and then run this:
rails generate active_admin:resource AdminUser
rake db:migrate
This will create an AdminUser
model that will have absolutely no link with your site's users.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With