显示值是否与Time.now相同

时间:2016-09-16 08:05:08

标签: ruby-on-rails

<%= user.last_seen_at.strftime("%I:%M UTC") %>会告诉我用户上次在我的网站上执行操作的日期。

执行<%=Time.now.strftime("%I:%M UTC") %>将提供当前时间。

如果&lt;%= user.last_seen_at%&gt;的值,我希望它设置在显示<h1> online </h1>的位置相同或在<%= Time.now.strftime("%I:%M UTC") %>的5分钟内。

4 个答案:

答案 0 :(得分:0)

试试这个:

<% = content_tag('h1','online') if (user.last_seen_at + 5.minutes) >= Time.current %>

答案 1 :(得分:0)

始终使用Time.zone.now而不是Time.now

Check this link

答案 2 :(得分:0)

创建辅助或实例方法可能更好

def online?
  last_seen_at + 5.minutes >= Time.current
end

答案 3 :(得分:0)

首先,5分钟的任意间隔应该避免硬编码到视图中。它可以在其他视图中使用,也可以在应用程序的任何位置使用。

我建议你把一个帮手写成一个集中的地方,你可以存储这5分钟的容差并在你的控制器中使用它,如下所示:

class MyController < ApplicationController
    helper TimeToleranceHelper
    ...
end

帮助程序本身应使用Time.zone.now而不是Time.nowread more on this)。

它可能看起来像:

module TimeToleranceHelper
  TOLERANCE = 5.minutes

  def soon?(time)
    now = Time.zone.now

    (time..time + TOLERANCE).cover? now
  end
end