【问题标题】:[rails5.1/devise/administrative]NameError in Admin::AdminUsers#index[rails5.1/devise/administrative]Admin::AdminUsers#index 中的NameError
【发布时间】:2018-03-06 05:31:27
【问题描述】:

我正在努力解决错误(Admin::AdminUsers#index 中的 NameError)

我正在使用设计和管理。 我必须设计控制器,所以设置一个控制器选项。

我的路线文件在这里。

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

但是,设置 :controller 后,访问 admin/ 路径时会出现parameter,ameError in Admin::AdminUsers#index

错误详情:

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:     ) %>

复制过程:

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

你能告诉我错误发生的原因吗?

在设置控制器参数之前,它工作正常。

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 路线相同

                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

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-5 administrative


    【解决方案1】:

    据我所知,您正在设置 :sessions =&gt; 'admin_users/sessions' 我看不到任何与您设置的路线匹配的路线。

    我看到一条带有会话的路线正在跟踪

        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
    

    我想你想添加devise/sessions,否则你必须创建一个匹配你的admin_users/sessions的路由

    【讨论】:

    • 谢谢你的响应。我定制了控制器(admin_users/sessions_controller.rb)。所以我指定了costom控制器,是不是错了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多