undefined method `strftime' for "{1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}":String 你的意思是?条

undefined method `strftime' for "{1=>2019, 2=>7, 3=>7, 4=>16, 5=>0}":String Did you mean? strip

我正在尝试以一种很好的方式输出时间。 这是我在 new

中的代码
<%= 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':字符串 你的意思?条带

请有人帮我解决这个问题

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

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

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

如果你只想使用这个哈希,那么你需要像下面这样将它解析为日期时间

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")

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