在 Destroy_User_Session_Path 之前设计操作

Lem*_*Dev 2 session ruby-on-rails cart devise

当用户单击“注销”时,我的应用程序正在运行 destroy_user_session_path 并且运行良好。但是,我需要在 destroy_user_session_path 发生之前从我的 carts_controller 运行 destroy 方法。单击注销按钮时运行这两个操作的最佳方法是什么?(我在应用程序中找不到设计控制器或会话控制器)

application.html.erb - 销毁注销按钮的调用

<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link boldLinks btn btn-primary'  %>
Run Code Online (Sandbox Code Playgroud)

购物车/show.html.erb - 单击一个按钮时,在销毁之前需要删除/清空购物车调用

<%= link_to 'Empty Cart', @cart, method: :delete, data: {confirm: 'Are you sure you want to empty your cart?'}, :class => 'btn btn-danger whiteText' %>
Run Code Online (Sandbox Code Playgroud)

wid*_*ayd 5

我认为你可以用这种方式扩展设计 SessionsController 。

编辑答案:

创建子类设计会话控制器,首先在 routes.rb 中告诉设计你想使用你自己的会话控制器:

devise_for :users, controllers: { sessions: 'users/sessions' }
Run Code Online (Sandbox Code Playgroud)

并在您的控制器中创建一个文件,例如session_controller.rb

class Users::SessionsController < Devise::SessionsController

  before_action :destroy_cart, only: :destroy

  def destroy_cart
    # your command here
  end
end
Run Code Online (Sandbox Code Playgroud)

这个链接是我们要使用的类