在Destroy_User_Session_Path之前设计行动

时间:2017-07-19 16:36:11

标签: ruby-on-rails session devise cart

当用户点击' logout'时,我的应用程序正在运行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'  %>

carts / 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' %>

1 个答案:

答案 0 :(得分:4)

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

编辑答案:

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

devise_for :users, controllers: { sessions: 'users/sessions' }

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

class Users::SessionsController < Devise::SessionsController

  before_action :destroy_cart, only: :destroy

  def destroy_cart
    # your command here
  end
end

this link是我们想要使用的类