【发布时间】:2016-02-11 14:44:40
【问题描述】:
我正在使用 Ruby on Rails 构建一个待办事项列表应用程序,我的 Task 资源中的每个项目都有一个使用 gem 'datetimepicker' 创建的 deadline 属性。
这个'datetimepicker' gem 将日期作为string 数据类型拉入,格式为"12/13/2012"、"%m/%d/%Y"。
我正在尝试按 deadline 属性中的日期值对 task 元素进行分组。我找到了一篇关于如何做到这一点的文章(尽管我认为它包含一个错字):
https://ariejan.net/2007/01/12/rails-group-results-by-week-using-group_by/
但是,我宁愿在 tasks_controller 中完成工作,也不愿在 task 模型中完成工作(也许模型是更简洁的方法?我是 nuby 并且愿意接受这方面的建议)。
我发现另一篇关于group_by 方法的文章演示了一个大概的过程:
http://railscasts.com/episodes/29-group-by-month?view=asciicast
这篇文章对我来说看起来更干净一些。它要求我使用.beginng_of_day 方法平等对待所有task 在其deadline 中具有相同日期值的项目。
我在这两种方法中都遇到了问题,即它们将deadline 视为datetime 数据类型。我想使用.to_datetime 方法来转换task.deadline,但是'datetimepicker' gem 格式化deadline string 对.to_datetime 的转换方式完全错误:
"12/13/2012".to_datetime # => ArgumentError: 无效日期
见 => apidock[dot]com[slash]rails[slash]String[slash]to_datetime
我发现了一篇类似的文章,它建议使用 .strptime 和 .strftime 方法重新格式化 deadline 属性,但是当 deadline 是 string 时,我不知道该怎么做而不是datetime:
参见 => stackoverflow[dot]com[slash]questions[slash]16296885[slash]how-to-convert-datetime-picker-value-to-datetime-in-ruby-on-rails
有人可以帮我进行这种转换,或者建议一种不同的(最好更简单的!)策略来按天对任务进行分组吗?
感谢您的帮助,并对损坏的链接表示歉意;我还没有足够的声望点来嵌入超过 2 个。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 datetime