【问题标题】:Rails, pulling date into cookie expiry timeRails,将日期拉入cookie到期时间
【发布时间】: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


【解决方案1】:

查看您的代码,@week 似乎是一个实例变量。 cookie 中的 expires: 需要 Time 类的对象。如果看起来你 @week.end_date 是以字符串的形式出现的,你可以这样做:

 ...
  expires: Time.new(@week.end_date).midnight

【讨论】:

  • 嗯,这会在浏览器中抛出“没有将日期隐式转换为整数”的错误。
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多