在 Ruby/Sinatra Time.now 格式在 IRB 中有效,但在 rackup/local 中无效
In Ruby/Sinatra Time.now formatting is working in IRB but not in rackup/local
我为 class
创建了这个方法
def time_stamp(time)
time.strftime("%I:%M%p")
end
当我不需要时在IRB中,进入方法并放入
time_stamp(Time.now)
它 returns: "07:57PM" 这就是我想要的
在 Sinatra 中,尽管我创建了一个新的 peep 对象:
@peep = Peep.new(:peep_timestamp => time_stamp(Time.now))
但是当我去 rackup 查看我的本地时,它仍然有未格式化的时间:
2015-01-17 19:15:23 +0000(例如)。我希望它在创建 Peep 对象时显示“07:57PM”或任何当前时间。
即使我输入
@peep6 = Peep.new(:peep_timestamp => "8:34PM")
它returns:
<Peep @id=nil @message=nil @peep_timestamp=2015-01-17 20:34:00 +0000>
我的整个 Peep class 看起来像:
class Peep
include DataMapper::Resource
property :id, Serial
property :message, Text
property :peep_timestamp, Time
property :username, String
def time_stamp(time)
time.strftime("%I:%M%p")
end
end
我觉得是跟属性:peep_timestamp,时间有关。因为(相当不直观)时间包括日期。我认为您需要在 Peep 中创建一个方法来更改为此 属性 保存的内容,这样它就不会引用日期。
您没有使用 time_stamp
方法,您直接调用 #peep_timestamp
。
你可以像下面这样来显示你想要的。
<%= time_stamp(peep.peep_timestamp) %>
感谢您分享您的 class,问题是 Peep 需要一个 Time 对象,但您向它发送了一个格式化的字符串。
最好这样做:
class Peep
include DataMapper::Resource
property :peep_timestamp, Time
def format_time
self.peep_timestamp.strftime("%I:%M%p")
end
end
现在您仍然可以使用以下方法实例化 class:
@peep = Peep.new(peep_timestamp: Time.now)
并且在您看来,像这样调用您的辅助方法:
<%= @peep.format_time %>
您希望您的对象有一个 Time 对象,但为了查看目的,您可以将其强制转换为您想要的任何格式,但如果您需要更改视图中的某些内容,您将始终可以访问完整的 Time 对象.
我为 class
创建了这个方法def time_stamp(time)
time.strftime("%I:%M%p")
end
当我不需要时在IRB中,进入方法并放入
time_stamp(Time.now)
它 returns: "07:57PM" 这就是我想要的
在 Sinatra 中,尽管我创建了一个新的 peep 对象:
@peep = Peep.new(:peep_timestamp => time_stamp(Time.now))
但是当我去 rackup 查看我的本地时,它仍然有未格式化的时间: 2015-01-17 19:15:23 +0000(例如)。我希望它在创建 Peep 对象时显示“07:57PM”或任何当前时间。
即使我输入
@peep6 = Peep.new(:peep_timestamp => "8:34PM")
它returns:
<Peep @id=nil @message=nil @peep_timestamp=2015-01-17 20:34:00 +0000>
我的整个 Peep class 看起来像:
class Peep
include DataMapper::Resource
property :id, Serial
property :message, Text
property :peep_timestamp, Time
property :username, String
def time_stamp(time)
time.strftime("%I:%M%p")
end
end
我觉得是跟属性:peep_timestamp,时间有关。因为(相当不直观)时间包括日期。我认为您需要在 Peep 中创建一个方法来更改为此 属性 保存的内容,这样它就不会引用日期。
您没有使用 time_stamp
方法,您直接调用 #peep_timestamp
。
你可以像下面这样来显示你想要的。
<%= time_stamp(peep.peep_timestamp) %>
感谢您分享您的 class,问题是 Peep 需要一个 Time 对象,但您向它发送了一个格式化的字符串。
最好这样做:
class Peep
include DataMapper::Resource
property :peep_timestamp, Time
def format_time
self.peep_timestamp.strftime("%I:%M%p")
end
end
现在您仍然可以使用以下方法实例化 class:
@peep = Peep.new(peep_timestamp: Time.now)
并且在您看来,像这样调用您的辅助方法:
<%= @peep.format_time %>
您希望您的对象有一个 Time 对象,但为了查看目的,您可以将其强制转换为您想要的任何格式,但如果您需要更改视图中的某些内容,您将始终可以访问完整的 Time 对象.