2014-12-03 71 views
5

我的Rails 4應用程序具有User和Admin模型。銷燬管理會話導致http獲取請求導軌4

我已經爲通過rails_admin gem創建的Admin模型實現了設計。當我嘗試註銷時,會發生問題:應用程序在意外頁面中重定向,並且日誌顯示GET請求正在進行,而不是DELETE。

研究之後我已經確保註銷環節都有規定如下

  • <%=的link_to 「管理員註銷」 delete方法,destroy_admin_session_path,:方法=>:刪除%>
  • 在devise.rb登出經由刪除 config.sign_out_via =指定:刪除

    的路由進行如下

    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。我注意到我目前只有應用程序和用戶控制器,並且沒有會話控制器。從我所瞭解的設計引擎應該帶來的會話管理開箱即用。有什麼建議嗎?

    +0

    的:方法=>:刪除功能來自jquery_ujs。這是否出現在您的項目中?你可能需要添加// = require jquery_ujs到你的application.js文件 – 2015-04-08 07:10:31

    +2

    RailsAdmin劫持你的Devise路由,然後因爲它不識別'/ admins/sign_out'它將它解釋爲'/ admins /:id ',路由到Show方法,並嘗試匹配一個id爲「sign_out」的模型。你需要找到一種方法來解決RailsAdmin和Devise的問題,讓路由以你需要的方式工作。 – Joseph 2015-04-29 22:05:01

    +0

    謝謝約瑟夫,這是有道理的,我會繼續挖掘這個方向。 – user2313058 2015-05-21 09:52:59

    回答

    -1

    看來您並未使用應用程序佈局文件。 所以嘗試下面的代碼片段添加到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>