Tri*_*rip 28 ruby-on-rails chronic
哈哈..
我正在使用Chronic来解析用户在日历中添加的时间.在代码工作并实现正确时间的情况下,最终结果是,如果用户添加时间,则它没有日期,并且因为它没有日期,所以它不会显示在结果中.有任何想法吗?
def set_dates
unless self.natural_date.blank? || Chronic.parse(self.natural_date).blank?
# check if we are dealing with a date or a date + time
if time_provided?(self.natural_date)
self.date = nil
self.time = Chronic.parse(self.natural_date)
else
self.date = Chronic.parse(self.natural_date).to_date
self.time = nil
end
end
unless self.natural_end_date.blank? || Chronic.parse(self.natural_end_date).blank?
# check if we are dealing with a date or a date + time
if time_provided?(self.natural_end_date)
self.end_date = nil
self.end_time = Chronic.parse(self.natural_end_date)
else
self.end_date = Chronic.parse(self.natural_end_date).to_date
self.end_time = nil
end
end
end
Run Code Online (Sandbox Code Playgroud)
编辑:
这是time_provided?方法:
def time_provided?(natural_date_string)
date_span = Chronic.parse(natural_date_string, :guess => false)
(date_span.last - date_span.first).to_i == 1
end
Run Code Online (Sandbox Code Playgroud)
首先,我不太确定您在问什么,因为看起来代码有意执行您所描述的操作...当提供时间时,会分配日期字段nil。我不认为这是慢性病的罪魁祸首,因为这就是你的代码的工作原理。
不知道你的设计(为什么有单独的日期和时间字段)、字段的类型等,我建议从这样的小杂乱开始:
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
self.date = self.time.to_date
Run Code Online (Sandbox Code Playgroud)
或者:
self.end_date = Chronic.parse(self.natural_date).to_date
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
end
Run Code Online (Sandbox Code Playgroud)
或者问题可能出在您提供的代码之外:在负责“因为没有日期,因此不会在结果中显示”行为的部分中?也许你应该让条件更灵活一些?
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |