【问题标题】:Rails Issue with Time.now in view vs controller视图与控制器中 Time.now 的 Rails 问题
【发布时间】:2014-04-07 21:03:44
【问题描述】:

当我设置其中一个变量时,我试图在我的控制器中执行Time.now。发生的情况是,当我显示它时,我得到了 2000-01-01 10:44:11 -0500 的值。当我在我看来<%= Time.now %> 时,我得到了正确的时间2014-03-05 11:39:17 -0500

这是有原因的吗?

这是我的控制器代码

def create_checkout_values
    @checked_out = CheckedOut.new
    @checked_out.bike_id=checked_out_params[:bike_id]
    @checked_out.user=User.find_by_login(checked_out_params[:user_id])
    @checked_out.time_of_checkout=Time.now

    @bike = Bike.find_by_bike_id(@checked_out.bike_id)
    if @bike != nil
      @checked_out.problem = @bike.problem_description
      @checked_out.fixed = @bike.need_repair
    else
      @checked_out.problem = ""
      @checked_out.fixed = false
    end
  end

【问题讨论】:

  • 没有控制器代码很难说
  • @JohnNaegle 这是我的控制器中调用的方法
  • 使用l (localize) 助手输出日期/时间
  • @MarianTheisen 我应该在哪里使用l
  • time_of_checkout的数据类型真的是时间吗?还有一件小事,在第 4 行和第 5 行使用 = 前后添加空格。您也可以使用 Time.now.localtime。

标签: ruby time ruby-on-rails-4


【解决方案1】:

您应该将 time_of_checkout 列的类型更改为 datetime 而不仅仅是时间。 从您的代码看来,您似乎真的想在那里存储一个日期+时间,而不仅仅是 Time.now 的时间部分(它返回完整的日期和时间,而不仅仅是时间)。当您保存记录时,AR 只会将完整的日期时间转换为时间(此处表示:吃掉日期),这就是为什么您会看到日期为 2000 年的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2017-12-11
    • 2014-06-11
    • 2016-11-07
    相关资源
    最近更新 更多