Схема проектирования контроллера Rails для панели приборов - PullRequest
9 голосов
/ 23 сентября 2011

Я хотел бы иметь страницу Dashboard, которая собирает информацию из нескольких моделей в сводное представление (без своей собственной модели). Как я должен идти по этому пути Rails? Должен ли я создать dashboard_controller с помощью только действия индекса?

Спасибо.

Ответы [ 5 ]

4 голосов
/ 23 сентября 2011

просто подумайте немного меньше о Rails.Я предполагаю, что ваша панель содержит в основном виджеты?т.е. какие-то автономные элементы, что угодно?почему бы не сделать эти виджеты вашей моделью (не на основе AR).инкапсулируйте всю свою логику и поиск данных в ваших моделях виджетов.так что теперь, если вы хотите перейти на RESTful, вы можете, например, создать WidgetsController с действием index в качестве панели мониторинга.на втором шаге вы можете использовать свое действие show для предоставления данных JSON для каждого виджета для AJAX-частей вашей панели мониторинга.и т.д.

просто помните, что REST не обязательно == CRUD, и модель не обязательно должна быть моделью ActiveRecord.Rails навязывает вам шаблон MVC, что является отличной вещью и делает даже плохо написанные приложения на Rails лучше, чем множество беспорядков в PHP, но иногда мы склонны забывать, что существует множество возможностей вне ActionController + ActiveRecord и т. Д..

1 голос
/ 23 сентября 2011

То, что вы хотели бы, это взглянуть на рамки администрирования и посмотреть, если это решает ваши потребности, мне нравится Typus и RailsAdmin В противном случае вы бы хотели взглянуть образец презентатора и его применение в Rails и вашем приложении. Панель инструментов в основном будет взаимодействовать только с вашими существующими моделями и логикой контроллера, так как вы не хотите в конечном итоге иметь ситуацию, когда у вас есть два набора логики для каждой модели. Хотя блог, на который я ссылаюсь, относится к 2007 году, вы сможете извлечь из него некоторую полезную информацию и получить представление о том, что вам нужно делать.

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.

0 голосов
/ 09 июля 2013

Мое решение - запустить

rails g controller Dashboards

, затем вручную создайте модель app / models / dashboard.rb, содержание которой может быть всего

class Dashboard end

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

Возвращаясь к контроллеру, вы создаете только действие index. Наконец, вы вручную создаете файл app / views / dashboards / index.html.erb с любым необходимым вам содержимым. Добавьте маршрут, и все готово. Если вы обращаете внимание на детали, вы можете изменить URL-адрес с / dashboards на / dashboard. Вот и все, я думаю, что это очень Rails-у.

0 голосов
/ 28 июня 2012

Будет ли это вариант использования для Presenter pattern ?

Я собираюсь реализовать панель управления ddashboard, и я считаю, что это лучший дизайн, который приведет к поддерживаемой базе кода.

0 голосов
/ 23 сентября 2011

Должен ли я создать dashboard_controller с помощью только действия с индексом?

Я предпочитаю помещать страницы, которые не выполняют CRUD, на модель (например, на панели мониторинга) в application_controller. Нет необходимости создавать dashboard_controller.

...