Есть несколько вариантов, чтобы справиться с этим.
Я считаю, что контроллеры являются связующим звеном между представлением и моделями, и что контроллеры должны выполнять весь поиск данных.Помощники предназначены только для того, чтобы помочь вашему коду просмотра стать более читабельным.
Итак, в этом свете есть несколько вариантов.
Подход Classic Rails
У нас естьбольшое приложение, в котором есть несколько общих блоков, связанных не с текущей страницей, а с текущим пользователем, где он может видеть свои предметы, действия и быстро прыгать.Все это происходит из базы данных.
Мы извлекаем данные, используя before_filter
методы.Эти методы определены в ApplicationController
.Мы уменьшаем наш ApplicationController
, смешивая этот код (общее поведение).
В нашем макете application
мы визуализируем различные партиалы для данных, собранных в этих фильтрах.Большинство из этих блоков зафиксированы и всегда видны.
Ячейки
Я не использовал его сам, но очень чистое решение, это использовать ячейки .Ячейки на самом деле являются своего рода блоками с собственным контроллером и представлениями, которые вы можете разместить на своей странице.Это звучит очень интересно и определенно интересно, если у вас есть портальный сайт с портлетами (кто-нибудь знает, что я имею в виду? Я чувствую себя таким старым;)).
Переключиться на клиент MVC
Если вы переключаетесь на одностраничное веб-приложение, такое как Gmail, то это также подходящее время для перехода на использование JavaScript-инфраструктуры MVC.Затем ваша страница может быть составлена из разных областей, каждая со своей моделью и видом (шаблоном), которые ссылаются на ваш контроллер rails.
В настоящий момент существует тонна библиотек, кажется, что все используют Магистраль в наши дни, но если вы выберете этот маршрут, я бы порекомендовал проверить spine.js : он имеет потрясающую интеграцию с рельсами и очень прост в использовании.
Надеюсь, это поможет.