Activeadmin не выходит из системы, когда я нажимаю «Выйти» - PullRequest
5 голосов
/ 12 октября 2011

Я следую инструкциям Railscast по установке activeadmin.После установки я получил две ошибки -

1) неверное число аргументов для sign_in - поэтому я переименовал свой метод sign_in в sign_in_user, и это исправило эту проблему.

затем

2) недопустимое количество аргументов для signature_in?- так я переименовал свою подпись в?метод is_signed_in?и это решило эту проблему.

Теперь все, кажется, работает, за исключением того, что когда я нажимаю кнопку выхода из системы в activeadmin, он говорит: «Выйти успешно», но кнопка выхода все еще находится в верхнем углу, и это не таквыйди из меня

Я добавил эти две вещи в свой файл active_admin.rb для предложений от людей с похожими проблемами:

config.logout_link_path = :destroy_admin_user_session_path

и

config.logout_link_method = :delete

, но все же не повезло.Вот мои маршруты рейка:

     admin_dashboard        /admin(.:format)                               {:action=>"index", :controller=>"admin/dashboard"}
            admin_comments GET    /admin/comments(.:format)                      {:action=>"index", :controller=>"admin/comments"}
            admin_comments POST   /admin/comments(.:format)                      {:action=>"create", :controller=>"admin/comments"}
         new_admin_comment GET    /admin/comments/new(.:format)                  {:action=>"new", :controller=>"admin/comments"}
        edit_admin_comment GET    /admin/comments/:id/edit(.:format)             {:action=>"edit", :controller=>"admin/comments"}
             admin_comment GET    /admin/comments/:id(.:format)                  {:action=>"show", :controller=>"admin/comments"}
             admin_comment PUT    /admin/comments/:id(.:format)                  {:action=>"update", :controller=>"admin/comments"}
             admin_comment DELETE /admin/comments/:id(.:format)                  {:action=>"destroy", :controller=>"admin/comments"}
    new_admin_user_session GET    /admin/login(.:format)                         {:action=>"new", :controller=>"active_admin/devise/sessions"}
        admin_user_session POST   /admin/login(.:format)                         {:action=>"create", :controller=>"active_admin/devise/sessions"}
destroy_admin_user_session DELETE /admin/logout(.:format)                        {:action=>"destroy", :controller=>"active_admin/devise/sessions"}
       admin_user_password POST   /admin/password(.:format)                      {:action=>"create", :controller=>"active_admin/devise/passwords"}
   new_admin_user_password GET    /admin/password/new(.:format)                  {:action=>"new", :controller=>"active_admin/devise/passwords"}
  edit_admin_user_password GET    /admin/password/edit(.:format)                 {:action=>"edit", :controller=>"active_admin/devise/passwords"}
       admin_user_password PUT    /admin/password(.:format)                      {:action=>"update", :controller=>"active_admin/devise/passwords"}
                     users GET    /users(.:format)                               {:action=>"index", :controller=>"users"}
                     users POST   /users(.:format)                               {:action=>"create", :controller=>"users"}
                  new_user GET    /users/new(.:format)                           {:action=>"new", :controller=>"users"}
                 edit_user GET    /users/:id/edit(.:format)                      {:action=>"edit", :controller=>"users"}
                      user GET    /users/:id(.:format)                           {:action=>"show", :controller=>"users"}
                      user PUT    /users/:id(.:format)                           {:action=>"update", :controller=>"users"}
                      user DELETE /users/:id(.:format)                           {:action=>"destroy", :controller=>"users"}
              attend_event POST   /events/:id/attend(.:format)                   {:action=>"attend", :controller=>"events"}
     remove_attendee_event POST   /events/:id/remove_attendee/:user_id(.:format) {:controller=>"events", :action=>"remove_attendee"}
                edit_event POST   /events/:id/edit(.:format)                     {:controller=>"events", :action=>"edit"}
                    events GET    /events(.:format)                              {:action=>"index", :controller=>"events"}
                    events POST   /events(.:format)                              {:action=>"create", :controller=>"events"}
                 new_event GET    /events/new(.:format)                          {:action=>"new", :controller=>"events"}
                edit_event GET    /events/:id/edit(.:format)                     {:action=>"edit", :controller=>"events"}
                     event GET    /events/:id(.:format)                          {:action=>"show", :controller=>"events"}
                     event PUT    /events/:id(.:format)                          {:action=>"update", :controller=>"events"}
                     event DELETE /events/:id(.:format)                          {:action=>"destroy", :controller=>"events"}
                  sessions POST   /sessions(.:format)                            {:action=>"create", :controller=>"sessions"}
               new_session GET    /sessions/new(.:format)                        {:action=>"new", :controller=>"sessions"}
                   session DELETE /sessions/:id(.:format)                        {:action=>"destroy", :controller=>"sessions"}
                    signup        /signup(.:format)                              {:controller=>"users", :action=>"new"}
              create_event        /create_event(.:format)                        {:controller=>"events", :action=>"new"}
                 my_events        /my_events(.:format)                           {:controller=>"events", :action=>"my_events"}
                    signin        /signin(.:format)                              {:controller=>"sessions", :action=>"new"}
                   signout        /signout(.:format)                             {:controller=>"sessions", :action=>"destroy"}
                   contact        /contact(.:format)                             {:controller=>"pages", :action=>"contact"}
                     about        /about(.:format)                               {:controller=>"pages", :action=>"about"}
                      help        /help(.:format)                                {:controller=>"pages", :action=>"help"}
                      root        /(.:format)                                    {:controller=>"pages", :action=>"home"}

что мне не хватает?спасибо!

Ответы [ 4 ]

1 голос
/ 09 марта 2017

Для пользователей Devise:

In /config/initializers/active_admin.rb

ActiveAdmin.setup do |config|
  config.logout_link_path = :destroy_user_session_path
  config.logout_link_method = :delete

RESTART SERVER перед тестированием изменения.

1 голос
/ 03 апреля 2012

У меня была та же проблема, с которой вы столкнулись. Я не вижу в вашем коде, где у вас есть методы sign_in и signature_in? , но я подозреваю, что они могут быть в классе SessionsHelper или аналогичном, и что этот помощник включен в ApplicationController вроде так?

class ApplicationController < ActionController::Base
  protect_from_forgery
  include SessionsHelper
...

Кажется, ActiveAdmin также реализует эти методы, и переопределение их в SessionsHelper разрушает его. Вы на правильном пути и почти там! Есть еще один метод, который вам, вероятно, нужно переименовать, тогда все готово:

sign_out

Переименуйте его тоже, тогда вы сможете входить и выходить, как и раньше. Удачи!

0 голосов
/ 18 августа 2014

Я решил это, изменив имя моего метода sign_out в моем SessionsHelper.

 def sign_out_user
  current_user.update_attribute(:remember_token,
                              Adult.digest(Adult.new_remember_token))
  cookies.delete(:remember_token)
  self.current_user = nil
end

Затем мне пришлось изменить метод уничтожения SessionsController, чтобы он соответствовал

def destroy
  sign_out_user   ###CHANGE HERE
  redirect_to root_url
end

Также, еслиВы используете метод в любом месте ваших взглядов.Вам нужно будет изменить его так, чтобы оно совпадало с новым именем метода.

0 голосов
/ 27 марта 2012
  1. Вы "перезапустили" свое приложение rails после того, как изменили его конфигурационный файл?

  2. как выглядит ваш route.rb? Мне интересно, есть ли у вас 2 утверждения devise_for, например,

    devise_for :admin_users, ActiveAdmin::Devise.config 
    #... other routes
    devise_for :users
    

    Если это так, пожалуйста, удалите 1 из них.

  3. убедитесь, что ссылка для выхода из системы выглядит следующим образом:

    <a href="/users/sign_out" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Logout</a>
    
...