Ruby on Rails - Railscast #213 Календарь сортировка по дате, а не по дате

Я создаю приложение, которое включает в себя календарь. Я обнаружил, что Railscast для построения календаря, хотя и датированный, оказался очень полезным. У меня все работает, я просто стараюсь, чтобы содержимое каждой даты было организовано по дате, а не только по дате, чтобы они отображались в правильном хронологическом порядке.

Мой текущий контроллер выглядит так:

def index
  @lessons = Lesson.all
  @lesson_by_date = @lessons.group_by { |i| i.lesson_date.to_date }
  @date = params[:date] ? Date.parse(params[:date]) : Date.today
end

Любая помощь будет принята с благодарностью. Спасибо

1 ответ

Я исхожу из предположения, что ваш вопрос в том, как мне организовать свои @lessons по дате и времени. Я упомяну несколько разных сценариев. Я немного ограничен, так как из вашего поста я не знаю, как вы организовали свою схему для таблицы, но я думаю, что контроллер дает мне примерную идею.

1) Вам следует заменить:

@lesson = Lesson.all
@lesson_by_date = @lessons.group_by { |i| i.lesson_date.to_date }

с чем-то, что быстрее:

@lesson_by_date = Lesson.order('lesson_date')

2) Если вам интересно, почему ваш текущий код не работает, это потому, что ваш блок group_by пытается преобразовать i.lesson_date в IE даты to_date. Вместо этого вы можете попробовать to_datetime.

3) Я хотел бы просмотреть http://apidock.com/rails/ActiveRecord/QueryMethods/order

Другие вопросы по тегам