[rails5.1/devise/administrative]NameError in Admin::AdminUsers#index

217 Views Asked by At

I'm struggling with error (NameError in Admin::AdminUsers#index)

I'm using devise and administrate. I have to costom devise controller,so set a controller option.

My routes file is here.

Rails.application.routes.draw do
  devise_for :admin_users, path: :admin, skip: [:registration], :controllers => {
    :sessions => 'admin_users/sessions'
  }
  namespace :admin do
    root to: "admin_users#index"
    resources :admin_users
  end
end

But,after setting :controller, parameter,ameError in Admin::AdminUsers#index is occures when access to admin/ path.

error detail:

ActionView::Template::Error (uninitialized constant AdminUsers::Session):
10: <nav class="navigation" role="navigation">
11:   <% Administrate::Namespace.new(namespace).resources.each do |resource| %>
12:     <%= link_to(
13:       display_resource_name(resource),
14:       [namespace, resource_index_route_key(resource)],
15:       class: "navigation__link navigation__link--#{nav_link_state(resource)}"
16:     ) %>

procedure for reproducing:

・access to /admin (and login screen is shown)
・enter e-mail address and pass and submit
・Error occur (after login success)

Can you tell me a the reason the error occurs??

before setting controller parameter, it worked fine.

Rails.application.routes.draw do
  devise_for :admin_users, path: :admin, skip: [:registration]
  namespace :admin do
    root to: "admin_users#index"
    resources :admin_users
  end
end

rake routes are same

                Prefix Verb   URI Pattern                           Controller#Action
    new_admin_user_session GET    /admin/sign_in(.:format)              devise/sessions#new
        admin_user_session POST   /admin/sign_in(.:format)              devise/sessions#create
destroy_admin_user_session DELETE /admin/sign_out(.:format)             devise/sessions#destroy
                      root GET    /                                     admin/admin_users#index
                admin_root GET    /admin(.:format)                      admin/admin_users#index
         admin_admin_users GET    /admin/admin_users(.:format)          admin/admin_users#index
                           POST   /admin/admin_users(.:format)          admin/admin_users#create
      new_admin_admin_user GET    /admin/admin_users/new(.:format)      admin/admin_users#new
     edit_admin_admin_user GET    /admin/admin_users/:id/edit(.:format) admin/admin_users#edit
          admin_admin_user GET    /admin/admin_users/:id(.:format)      admin/admin_users#show
                           PATCH  /admin/admin_users/:id(.:format)      admin/admin_users#update
                           PUT    /admin/admin_users/:id(.:format)      admin/admin_users#update
                           DELETE /admin/admin_users/:id(.:format)      admin/admin_users#destroy
1

There are 1 best solutions below

1
On

From what I see you are setting :sessions => 'admin_users/sessions' where I don't see any routes matching what you are setting.

I am seeing a routes with sessions are following

    new_admin_user_session GET    /admin/sign_in(.:format)              devise/sessions#new
        admin_user_session POST   /admin/sign_in(.:format)              devise/sessions#create
destroy_admin_user_session DELETE /admin/sign_out(.:format)             devise/sessions#destroy

I think you want to add devise/sessions or else you have to create a route that matches your admin_users/sessions