Rails: I installed ActiveAdmin and my development program stopped working

I have a setup.
And I have a link: <%= link_to "Sign up", new_user_registration_path %>

When I installed ActiveAdmin (for an existing User model), this link stopped working:

 undefined local variable or method `new_user_registration_path' 

I used git diff for routes.rb and here it is (the 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 the old revision and the 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"} 
+6
source share
3 answers

It seems that you are using the same model for both regular users and admin users. ActiveAdmin requires a separate model for administrators. Try to revert 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 connection with users of your site.

+1
source

One thing you might miss is declaring the user model as β€œregistered” in order to get the registration routes created 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.

+11
source

in routes.rb, specify devise_for: users This will restore user routes.

+1
source

Source: https://habr.com/ru/post/922891/


All Articles