Как сортировать сообщения по дате и времени? - PullRequest
0 голосов
/ 25 марта 2012

Я веду блог с полным списком и пытаюсь правильно сортировать посты по дате (если я публикую пост более одного раза в день, статьи будут отсортированы по алфавиту за этот день). Прямо сейчас в моем config.ru у меня есть базовая настройка для даты с # set :date, lambda {|now| now.strftime("%d/%m/%Y") } и настройка для времени # set :time, lambda {|now| now.strftime("at %H:%I%p") }

В моем layout.rhtml статьи отсортированы так: <% articles.select {|a| a[:date] <= Date.today}[0..4].each do |article| %> Я знаю, что мне нужно как-то добавить туда :time, но понятия не имею, как.

1 Ответ

1 голос
/ 25 марта 2012

Добавьте поле под названием time в ваши статьи:

title: The Wonderful Wizard of Oz
author: Lyman Frank Baum
date: 1900/05/17
time: 12:30:00 PST

Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry,
who was a farmer, and Aunt Em, who was the farmer's wife.

Обезьяна исправляет класс Article перед блоком сервера:

require 'time'

class Article  
  def timestamp
    self[:timestamp] ||= Time.parse("#{self[:date].strftime("%Y-%m-%d")} #{self[:time]}")
  end
end  

toto = Toto::Server.new do

Теперь в вашем макете вы можете использовать метод timestamp для сортировки:

<% articles.select {|a| a.timestamp <= Time.now}[0..4].each do |article| %>
...