对于“ {1 => 2019,2 => 7,3 => 7,4 => 16,5 => 0}”的未定义方法`strftime':String您是什么意思?剥离

时间:2019-07-07 20:05:28

标签: html ruby-on-rails forms strftime

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

<%= 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':字符串 你的意思是?剥离

请有人帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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