【问题标题】:Good design for incrementing / decrementing week view of a to do list?用于增加/减少待办事项列表周视图的良好设计?
【发布时间】:2013-06-19 05:02:29
【问题描述】:

我正在寻求有关如何设计一个显示待办事项列表周视图的网络应用程序的建议。

当前布局是一个表格,以一周中的几天作为列,下面列出了要完成的项目。通过计算控制器中的标题日期,我得到了一些功能:

@week_starting = Date.today.at_beginning_of_week if @week_starting.blank?

其他工作日标题通过增加@week_starting 来显示。

我创建了单独的实例变量,例如@to_do_on_mon、@to_do_on_tue 等,以显示当天要做的事情(然后遍历它们以列出项目)。 这是一个例子:

@to_do_on_mon = BatchTicket.where("Date(load_date) =?", @week_starting.strftime

您将如何改进此设计以轻松增加/减少显示的周数并列出要完成的项目?

【问题讨论】:

  • 你唯一的解决办法是一周?如果是这样,您可以保存年份、当年的周数和一年中的一天。

标签: ruby-on-rails


【解决方案1】:

首先,这只是个人喜好,但我认为将第一行更改为这样会使代码更好:

@week_starting ||= Date.today.at_beginning_of_week

更短更清晰。

我不确定我是否理解你想用Date(load_date) 做什么,但既然你有可用的 ActiveSupport,我可能会做一些更具可读性的事情:

@to_do_on_mon = BatchTicket.where date: (@week_starting + 0.days)
@to_do_on_tue = BatchTicket.where date: (@week_starting + 1.days)
# etc.

或者,根据您的页面/应用的外观,如果您需要,您可以在一个查询中完成:

BatchTicket.where('your date range').group_by { |b| b.date.strftime("%u") }

将返回一个分组为天 (1..7) 的数组。

希望有帮助

【讨论】:

  • 关于 ||= 的好建议。已经完成了。至于 Date(load_date) 位,这是我发现可以按日期准确定位我的项目的唯一方法 (stackoverflow.com/questions/16682526/…)。关于如何更新显示的星期有什么建议吗?
  • 哦,我错过了这个问题。我不确定我是否理解“增加/减少一周”的含义 - 您想显示一周视图,然后在几周之间分页?
  • 我的意思是我有我当前的表格,我使用@week_starting 计算标题,然后将其递增以显示星期二、星期三等。我有两个图标 我想显示单击前/下周,这意味着“week_starting”必须 -/+ 7 天,然后刷新页面。我也对使用 AJAX 持开放态度,但我想我会先让它工作以了解如何使用。
  • 您可以使用 ajax 调用来更新表的数据(您可能会在初始调用时将其存储在 JSON 中)——这将是更快的方法。您还可以使用将返回所有数据的普通 GET 请求。这样做的好处是用户可以收藏/分享特定一周的链接。
  • 你知道任何可以描述这些方法的链接吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-12
  • 2013-10-13
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多