ruby-on-rails - 设计无法完成 session Controller 功能的管理模型

标签 ruby-on-rails ruby authentication devise ruby-on-rails-4

我正在构建一个基本的 CRUD 应用程序。用户模型运行良好。但是,我创建了我的第二个设计模型(管理员),并且在尝试使用我的管理员帐户登录和注销时收到错误消息。

错误

uninitialized constant Admins::SessionsControllerController

sessions_controllers.rb

管理 Controller 在controllers/admins/sessions_controllers.rb

class Admins::SessionsController < Devise::SessionsController
end

routes.rb

resources :gifts
devise_for :users
devise_for :admins, :controllers => { :sessions => "admins/sessions_controller" }

authenticated :user do
  root to: "gifts#index", :as => "authenticated_user_root" 
end

authenticated :admin do
  root to: "management#index", :as => "authenticated_admin_root" 
end

root :to => 'pages#index'

当我搜索路线时,我也看到了正确的路线:

destroy_user_session_path    DELETE  /users/sign_out(.:format)   devise/sessions#destroy

admin.rb

class Admin < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
end

完整追踪

activesupport (4.0.0) lib/active_support/inflector/methods.rb:228:in `const_get'
activesupport (4.0.0) lib/active_support/inflector/methods.rb:228:in `block in constantize'
activesupport (4.0.0) lib/active_support/inflector/methods.rb:224:in `each'
activesupport (4.0.0) lib/active_support/inflector/methods.rb:224:in `inject'
activesupport (4.0.0) lib/active_support/inflector/methods.rb:224:in `constantize'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:76:in `controller_reference'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:66:in `controller'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:44:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/mapper.rb:44:in `call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'

我正在寻求帮助以使我的管理模型正常工作。有谁知道如何让它正常工作?

最佳答案

你在 devise_for 中有错别字,

devise_for :admins, :controllers => { :sessions => "admins/sessions_controller" }

应该是

devise_for :admins, :controllers => { :sessions => "admins/sessions" }

参见 https://github.com/plataformatec/devise#configuring-controllers

关于ruby-on-rails - 设计无法完成 session Controller 功能的管理模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20208156/

相关文章:

ruby - OAuth2 与 intridea ruby gem

ruby - 如何在 ruby​​ watir 中使用 xpath 获取 <legend> 标签的文本值。(使用 IE)

php - 用户登录和 session :Safe or Not

java - 登录 局域网内计算机的用户名 java

ruby-on-rails - 将数组从 Controller 传递到 ruby​​ 中查看

ruby-on-rails - ruby on Rails 上的构建方法

ruby - 这两种使用 put 命令的方法有什么区别?

authentication - HTTP 授权 header 和查询字符串参数之间的区别

javascript - 如何在 javascript onchange 中显示值?

ruby-on-rails - 使用 Devise 对身份验证失败的自定义 XML 响应