【问题标题】:undefined method `strftime' for "{1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}":String Did you mean? strip"{1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}" 的未定义方法 `strftime':String 你的意思是?条
【发布时间】:2019-11-17 10:12:24
【问题描述】:

我正在尝试以一种不错的方式输出时间。 这是我的新代码

<%= form_for @reservation do |f| %>
   <span><label>Pick up time</label></span>
     <%= f.time_select :time,ampm: true, class: "textbox"%></span>
<% end %>

这是在输出文件中

<strong>Pick up Time:</strong> <%= @reservation.time.strftime("%H:%M")  %>

我收到了这个错误 “{1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}”的未定义方法`strftime':字符串 你的意思是?剥离

请有人帮我解决这个问题

【问题讨论】:

  • @reservation.time 返回什么?
  • {1=>2019, 2=>7, 3=>7, 4=>19, 5=>59}
  • 这看起来像一个哈希。 strftime 是一个 DateTime 方法,如果有的话,您的架构中保留时间的数据类型是什么?
  • add_column :reservations, :time, :string

标签: html ruby-on-rails forms strftime


【解决方案1】:

正如塞巴斯蒂安在评论中提到的那样;看起来您的 time 对象是一个哈希。要调用strftime,您的对象必须是:datetime

要解决此问题,您应该将数据库中的列类型更改为日期时间(以及更改表单以保存日期时间值)。

另一种方法是使用 time 中的内容(不使用 strftime)手动构建要显示的字符串。

【讨论】:

  • 你知道我怎样才能在上面显示上午和下午吗?
  • 现在是 strftime("%I:%M %p")
【解决方案2】:

如果您只想使用此哈希,则需要将其解析为日期时间,如下所示

a = {1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}
time = (a.values.first(3).join("/") + " "+ a.values.last(2).join(":")).to_datetime.strftime("%I:%M %p")

解析到日期和时间后,您可以执行任何日期时间方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2022-10-08
    • 2018-12-23
    • 2018-07-07
    相关资源
    最近更新 更多