Rails 2.3x:使用名称中的[]删除cookie

时间:2013-07-13 00:04:45

标签: ruby-on-rails cookies

我正在尝试删除表单字段值的Cookie。 Rails text_field助手将[]添加到名称中。即name = user [name]

在这种情况下,cookie已使用路径创建。 (path ='/ login /')

当我尝试删除cookie时

cookies.delete("user[name]")

[]获得由Rack编码的URL。

我可以将cookie设置为nil,如下所示:

response['set-cookie']='user[name]='

清除cookie,但仅限于路径'/ login'。 (没有尾部斜杠)需要使用尾部斜杠来避免IE8错误,该错误无法在没有尾部斜杠的情况下存储cookie。

如何直接从响应对象设置cookie并同时设置路径?

1 个答案:

答案 0 :(得分:0)

我能够完成删除cookie,执行以下操作:

response["Set-Cookie"] = 'user[name]=; path=/login/; expires=Thu, 01-Jan-1970 00:00:00 GMT'

要删除第二个Cookie,您可以执行以下操作:

response["Set-Cookie"] = [ response["Set-Cookie"], 'user[email]=; path=/login/; expires=Thu, 01-Jan-1970 00:00:00 GMT' ].join("\n")

这正是Rack(v1.1.3)的作用。

然后,确认第一个cookie被删除的规范如下所示:

it "should delete the cookie used to store the username form field" do
  post :login, @correct_form_params
  response["Set-Cookie"][0].should =~ /user\[username\]=;/
end

希望这有助于其他人!