Rails - макет приложения с SQL? - PullRequest
0 голосов
/ 02 июля 2010

Привет , все мои коллеги-программисты! У меня есть проблема ооо чок! ..: P Теперь моя проблема в том, что я пытаюсь сделать дизайн для сайта большего размера, все идет хорошо. Пока я не должен сделать слайдер контента / новостей. Он должен брать данные из нескольких таблиц и возвращаться в application.html.erb.

Так что берите обзоры и объявления только за последние 5 и заказывайте их после последних созданных. а затем передайте его мне в application.html.erb .. (Rails 3.0.0.beta4)

надеюсь, вы, ребята, меня понимаете.

Ответы [ 2 ]

1 голос
/ 03 июля 2010

Возьмите последние 5 для всех моделей, затем поместите все записи в массив, отсортируйте массив и возьмите первые 5 элементов.

# consider moving .order('date desc').limit(5) to a named scope or a module
announcements = Announcement.order('date desc').limit(5)
posts = Post.order('date desc').limit(5)
monkeys = Monkey.order('date desc').limit(5)
# .. add others here

elements = (announcements + posts + monkeys).sort_by(&:date).reverse[1..5]

Переменная elements будет иметь 5, еслиони существуют.

Примечание: я предполагаю, что у всех ваших моделей есть метод с именем "date".Вы можете изменить его на date_created или любой другой.

Вы можете разместить этот код в нескольких местах, но я думаю, что лучшим будет «домашний» контроллер, созданный специально для рендеринга домашней страницы.Элементы будут рассчитаны на его действие шоу.

0 голосов
/ 07 июля 2010

не знаю, является ли более производительным использование этого синтаксиса вместо синтаксиса от egarcia:

elements = (announcements | posts | monkeys).sort_by(&:date).reverse[1..5]

если вам нужно использовать этот код на нескольких страницах (например, на боковых панелях),лучший способ - написать помощника (скажем, last_items)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...