销毁导致 HTTP 获取请求轨道的管理会话 4.



My Rails 4 应用程序具有用户和管理员模型。

我已经为通过 gem 创建的管理模型实现了设计rails_admin。当我尝试注销时出现问题:应用程序在意外页面中重定向,日志显示不断发出 GET 请求,而不是删除请求。

经过研究,我确保注销链接具有指定如下的删除方法

  • <%= link_to "管理员注销", destroy_admin_session_path, :方法 => :d elete %>
  • 在 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>

    最新更新