0

我有一个应用程序,用户可以在其中查看今天或给定日期的体育赛事(如果用户在 URL 中手动输入)。用户可以使用 UI 控件按日期导航体育赛事,大致如下所示:

Tue Nov. 27  | Wed Nov. 28  | Thu Nov. 29

(日期是除了中间当前活动的链接之外的链接。)

此日期导航控件非常适合几乎每天发生的体育赛事。用户永远不会盯着空白页的事件。但是,对于 NFL 等体育赛事,事件仅发生在周一、周四、周日(有时是周六),用户使用日期导航 UI 控件变得很麻烦。

我想做的是更改创建日期导航 UI 链接背后的逻辑,以仅包含那些有事件的日期。逻辑是这样的:

  • 给定今天的日期或用户提供的日期,返回最近的有事件的日期(current_date)
  • 给定一个 current_date,找到最近的有事件的前一个日期(previous_date)
  • 给定一个 current_date,找到最近的下一个有事件的日期 (next_date)

因此,对于 NFL,日期导航 UI 控件可能如下所示,假设今天的日期是 11 月 27 日:

Mon Nov. 25  | Thu Nov. 29  | Sun Dec. 2

判断给定日期是否有任何事件的方法是按start_time数据库中的字段。

我不喜欢在没有代码的情况下发布问题,但我正在寻找一些指导,说明我应该如何解决这个问题,而不必多次访问数据库。

注意#1:当您单击一项运动的日期时,它会返回该日期的所有事件。日期导航不用于查看单个事件。

4

1 回答 1

1

在您的模型中创建一个范围方法,以获取给定运动的下两个开始日期和最近的开始日期。限制它只返回三个记录。

在您的控制器中使用此范围仅获取这三个游戏对象。使用控制器中的这三个游戏对象,将它们作为实例变量(例如)传递给视图局部render @games,并在局部中编写通用链接代码<%= link_to "#{@games.start_time}", your_path(@game) %>。Rails 将自动迭代此部分以获取集合中的对象数量(三个游戏)。

来源: http: //guides.rubyonrails.org/layouts_and_rendering.html#using-partials

于 2012-11-28T07:04:31.467 回答