使用link_to删除会话变量

时间:2015-04-20 21:30:19

标签: ruby-on-rails ruby-on-rails-4

我想知道实现删除会话对象的链接或按钮(会话[:object])的最佳方法是什么。我在浏览器中存储了一些数据,用户必须能够随时删除这些数据。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我会创建一个名为clear_[whatever]的路由,并将其绑定到控制器中的自定义操作。

你的路线看起来像这样:

get '/clear-[whatever]', to: '[your controller]#clear_[whatever]', via: [:destroy], as: :clear_[whatever]

您的按钮将是:

<%= link_to clear_[whatever]_path ... %>

并且您的控制器操作应该:

def clear_[whatever]
  @clear = session[:whatever] = nil
  if @clear ... 
  ...
  else 
  ...
end

答案 1 :(得分:2)

您可以创建一个控制器(或者,在您对象的现有控制器中使用非REST方法):

控制器

class WidgetSessionsController < ApplicationController
  # "Delete" widget session data
  def destroy
    # Remove the widget from the session
    @_current_user = session[:widget] = nil
  end
end

的routes.rb

# obviously you could add create and update here
resources :widget_sessions [only: destroy] 

查看

<%= link_to 'Click here to delete your widget session!', widget_session_path(), method: :delete %>