Rails: Показать записи по месяцам в представлении, каким-либо другим способом? - PullRequest
0 голосов
/ 06 мая 2011

СЦЕНАРИЙ: У меня есть куча спичек. Я хочу создать в моем представлении боковой столбец с HTML-ссылками, где вы можете просматривать совпадения по месяцам. Вот моя текущая реализация:

ТЕКУЩЕЕ РЕШЕНИЕ :

#Controller
@matches_by_month = Match.find(:all).group_by {|match| match.kickoff.strftime('%B %Y')}

#View
<%  @matches_by_month.each do | month, matches | %>
<%=link_to month %><br>
<% end %>

# Returns in the side column links that look like this.
# April 2011
# May 2011
# Which is great!

ПОИСКОВЫЙ СОВЕТ: Я думаю, что это не очень хорошее решение, потому что с течением времени эта страница будет замедляться. Правильно? К 2013 году у меня могло быть 1500 записей, и кажется бесполезным непрерывно находить (: все) совпадения, чтобы получать месяцы. Можно ли использовать другое решение? Должен ли я хранить отдельную таблицу вне «матчей», которая отслеживает месяцы. Может быть, я задумываюсь об этом, и текущее решение в порядке. Мысли?

1 Ответ

1 голос
/ 06 мая 2011

Если можно с уверенностью предположить, что между первой записью и последней записью есть совпадения каждый месяц, вы можете:

# for your sidebar
start_date = Match.first.kickoff.to_date
end_date = Match.last.kickoff.to_date

<% start_date.step(end_date, 1.month) do |date| %>
  <%= link_to date.strftime('%%B %Y'), matches_by_month_path(date) %>
<% end %>

А затем в вашем контроллере просто проанализировать выбранную дату и выполнить условный поискиспользуя Match.where(...).

...