注销ActiveAdmin后重定向

mbi*_*ard 5 ruby-on-rails devise activeadmin

我正在尝试将用户重定向到我的root_path,这是/允许未经身份验证的用户,但我似乎无法更改其默认行为active admin.

我知道active admin用途devise作为身份验证机制,但我不能覆盖为默认值devise要么.

我尝试了以下内容application_controller.rb(即使它应该是默认值):

# Overwriting the sign_out redirect path method
def after_sign_out_path_for(resource_or_scope)
  root_path
end
Run Code Online (Sandbox Code Playgroud)

但我仍然在我的日志中看到这个:

Started GET "/admin/logout?locale=fr" for 127.0.0.1 at 2012-06-07 11:30:15 -0400
  Processing by ActiveAdmin::Devise::SessionsController#destroy as HTML
  Parameters: {"locale"=>"fr"}
  AdminUser Load (0.4ms)  SELECT `admin_users`.* FROM `admin_users` WHERE `admin_users`.`id` = 1 LIMIT 1
   (0.1ms)  BEGIN
   (0.3ms)  UPDATE `admin_users` SET `remember_created_at` = NULL, `updated_at` = '2012-06-07 15:30:15' WHERE `admin_users`.`id` = 1
   (0.5ms)  COMMIT
Redirected to http://localhost:3000/admin
Completed 302 Found in 47ms
Run Code Online (Sandbox Code Playgroud)

所以它将我发回登录页面.

小智 6

Fivell回答有点不正确,因为登录也被重定向到root_path.更好的是,您可以覆盖特定的Devise方法:

ActiveAdmin::Devise::SessionsController.class_eval do
  def after_sign_out_path_for(resource_or_scope)
    "/wherever-you-want"
  end
end
Run Code Online (Sandbox Code Playgroud)


Fiv*_*ell 2

我为此做了一个猴子补丁

module ActiveAdmin::Devise::Controller

      def root_path
        "/"  #add your logic
      end
end
Run Code Online (Sandbox Code Playgroud)

将其添加到初始值设定项中,并且注销后必须强制重定向到根 url。