Meine Rails 4 Applikation hat ein User und Admin Model.Destroy admin session resultierend in HTTP get request rails 4
Ich habe für das Admin-Modell, das über Rails_admin gem erstellt wurde, implementiert. Das Problem tritt auf, wenn ich mich abmelden möchte: Die App leitet eine unerwartete Seite weiter, und Protokolle zeigen, dass GET-Anfragen statt DELETE-Anfragen gemacht werden.
Nach Forschung Ich habe dafür gesorgt, dass der Logout-Link die Löschmethode hat angegeben, wie unten
in devise.rb das Zeichen aus über Lösch config.sign_out_via = angegeben: löschen
die Routen sind wie folgt
Mvc::Application.routes.draw do
resources :users
devise_for :admins
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
root "users#index"
end
Ich kann mich ohne Probleme anmelden, aber wenn die Abmeldungsanforderung im Browser in/admins/sign_out gerendert wird, ist die Sitzung noch aktiv und die Seite zeigt immer noch das Admin-Dashboard an. Interessanterweise ist die Flash-Mitteilung zeigt ‚Model‚S‘konnte nicht gefunden werden‘ und ich bin wirklich von dem, was die Protokolle verwirrt zeigt
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
Was würde Ich mag ist, zu erreichen, dass, wenn die Abmeldung ausgeführt wird, der Admin-Sitzung zerstört und der Admin wird zum root_path umgeleitet. Ich stelle fest, dass ich derzeit nur die Anwendung und den Benutzer-Controller und keinen Session-Controller habe. Von dem, was ich verstehe, sollte die Geräte-Engine Session-Management aus der Box bringen. Irgendwelche Vorschläge, bitte?
Den hinzuzufügen: method =>: delete Funktionalität von jquery_ujs kommt. Ist das in Ihrem Projekt vorhanden? Möglicherweise müssen Sie // = jquery_ujs zu Ihrer application.js-Datei hinzufügen. –
RailsAdmin entführt Ihre Route von Devise, und weil es '/ admins/sign_out' nicht erkennt, interpretiert es es als'/admins /: id ', Routing zu der Show-Methode und versuchen, ein Modell mit einer ID von" sign_out "zu entsprechen. Sie müssen einen Weg finden, RailsAdmin und Devise zu entwirren, damit die Routen so funktionieren, wie Sie es brauchen. – Joseph
Danke Joseph, das macht Sinn, ich werde weiter in diese Richtung graben. – user2313058