【发布时间】:2015-06-04 03:54:40
【问题描述】:
我目前正在建立一个在线竞赛网站。有一个名为 :weeks 的资源,它有一个 start_date 和一个 end_date。这个 has_many :entries,并且可以通过创建和销毁投票来投票赞成和反对投票。我正在尝试设置一个 cookie,以便用户每周只能投票一次。但我无法让 cookie 设置为 Weeks end_date 设置为过期时间。
如果我在 EntriesController 中使用以下代码,cookie 集:
def upvote
@entry.votes.create
cookies.permanent[:voted] = { value: "#{@week.title} voted" }
redirect_to @week
end
但是,当我尝试传递周 end_date 时,cookie 没有设置并且没有出现在浏览器资源中。
def upvote
@entry.votes.create
cookies[:voted] = { value: "#{@week.title} voted",
expires: @week.end_date.midnight }
redirect_to @week
end
使用before_action 在条目控制器中设置周:
@week = Week.find(params[:week_id])
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
您能以某种方式将
puts @week.class放入您的代码中以确保它返回Time对象吗? -
如果我在视图中输出
<%= @week.end_date.midnight %>,它会在页面上显示为2015-03-05 00:00:00 UTC- 我很确定这应该可以工作,因为cookie设置使用7.days.from_now输出为@987654330 @所以格式看起来一样,只是似乎没有正确地将其拉入cookie -
哦,伙计,从我粘贴的这个看,我可以看到结束日期被吐出为 3 月 5 日,而不是 4 月 5 日,因此 cookie 设置为立即到期!我现在好尴尬!
标签: ruby-on-rails ruby cookies model-view-controller controller