My Rails 4 应用程序具有用户和管理员模型。
我已经为通过 gem 创建的管理模型实现了设计rails_admin。当我尝试注销时出现问题:应用程序在意外页面中重定向,日志显示不断发出 GET 请求,而不是删除请求。
经过研究,我确保注销链接具有指定如下的删除方法
在 devise.rb 中,注销是通过删除指定的 config.sign_out_via = :d elete
路线如下
Mvc::Application.routes.draw do
resources :users
devise_for :admins
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
root "users#index"
end
我完全能够毫无问题地登录,但是当注销请求在浏览器中呈现到/admins/sign_out 中时,会话仍然处于活动状态,并且页面仍然显示管理仪表板。有趣的是,闪光消息显示"找不到型号'S'",我对日志显示的内容感到非常困惑
Started GET "/admins/sign_out" for 127.0.0.1 at 2014-12-03 23:10:50 +0000
Processing by RailsAdmin::MainController#show as HTML
Parameters: {"model_name"=>"s", "id"=>"sign_out"}
[RailsAdmin] Could not load model S, assuming model is non existing. (uninitialized constant S)
Gemfile
source 'https://rubygems.org'
gem 'rails', '4.0.3'
gem 'sqlite3'
gem 'bootstrap-sass', '~> 3.3.1'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'simple_form'
gem 'bcrypt-ruby'
gem 'devise'
gem 'rails_admin'
group :assets do
gem 'sass-rails', '~> 4.0.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
end
group :doc do
gem 'sdoc', require: false
end
group :development do
gem 'better_errors', '~> 2.0.0'
end
我想实现的是,当执行注销时,管理员会话将被销毁,管理员被重定向到root_path。我注意到我目前只有应用程序和用户控制器,没有会话控制器。据我了解,设计引擎应该开箱即用地进行会话管理。有什么建议吗?
您似乎没有使用应用程序布局文件。因此,请尝试将以下代码片段添加到 html 文件中
<head>
<title>Training</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>