2015-08-07 2 views
2

Я относительно новичок в MVC и очень новичок в Ruby on Rails. Я прошел через Майкл Хартл отлично Ruby on Rails Tutorial во второй раз, и у меня есть вопрос о архитектуре приложения. В третьей главе он создает несколько статических страниц с действиями от одного и того же контроллера. Это распространено в архитектуре MVC? Как вы определяете, какие страницы должны иметь один и тот же контроллер и какие страницы должны иметь собственный индивидуальный контроллер? Я предполагаю, что у клиентов и контактов будет свой собственный контроллер, но как насчет чего-то вроде панели мониторинга или контактной страницы, может ли они пойти на один и тот же контроллер?MVC Application and Controller Design

Спасибо за помощь, извините за упрощенную проблему. :)

ответ

1

На самом деле, статические страницы на самом деле не о MVC, подумайте об этом: они статичны, поэтому у них нет бизнес-логики. В основном вы получите VC вместо MVC (модель не будет существовать).

Обычно для статических страниц только, если они не нуждаются в каком-то особый маршруте, вы бы с одним контроллером и кучей действий, прямое следствием будет имеющей структуру каталогов, как

views/static_pages/<youstaticpage>.html.erb 

Это довольно приятно, особенно если ваши статические страницы действительно статичны, поэтому вы получите максимум 10 страниц.

В тот момент, когда вам нужно извлечь данные из базы данных, я предлагаю извлечь эту страницу в свой собственный контроллер. Например, если вы храните адрес электронной почты/телефон/адрес веб-сайта или что-то в своем местоположении, и вам нужно его получить и использовать в своей . О странице, я предлагаю создать ваш AboutController и обрабатывать все через него.

Таким образом, вы оставите StaticPagesController очень чистым. При этом, если вы хотите строго придерживаться MVC, у вас должен быть один контроллер на статическую страницу, но в этом случае он действительно бесполезен. Извлеките код, когда вам это нужно, все равно будет очень легко: в тот момент, когда у вас нет простой страницы, извлеките ее в свой собственный контроллер.

Важная вещь, которую я узнал от POODR, состоит в том, что код должен быть достаточно хорошим. Кроме того, вы должны начать рефакторинг, когда это необходимо, чрезмерное проектирование, это уродливый зверь. Поверь мне, я обожаю сверхтехнические вещи.

+0

Спасибо за объяснение, это имеет смысл. Я тоже проверю книгу. Может быть, я могу найти копию на ebay. :) – mack