Rails:我可以根据一天的时间有不同的观点吗?

时间:2013-08-29 00:44:30

标签: ruby-on-rails

我正在尝试为食品卡车创建一个只在一天中的某些时段显示的订购页面。我知道这可能是可能的,但我不确定如何实现它。时间必须基于"实时" (可能与GMT相似)而不是用户的当地时间。

我在控制器中思考,它会检查"实时"如果它落在时间范围内,则渲染一页;如果时间超出时间范围,则渲染另一页。

提前致谢!

1 个答案:

答案 0 :(得分:1)

Rails Time方法可以帮助解决这个问题。以下是您可以直接删除控制器操作的代码段示例:

now = Time.now
start_of_day = now.at_midnight 
time_at_noon = start_of_day + 43200 # 12hr * 60min * 60sec

if now > time_at_noon
  render template: "after_noon"
else
  render template: "before_noon"
end

当然,您需要根据您要解析的时间进行计算。

此外,如果您要跨控制器应用此逻辑,您可能希望将其抽象为模块。

<强>更新

如果要将所有时间标准化为UTC,则需要将整个片段包装在明确声明时区的块中(当然,您需要将所需的本地时间转换为UTC): / p>

Time.use_zone('UTC') do
  # above code goes here
end