Новая идея Rails в представлениях и больше не контроллер. может быть лучше может быть хуже, мне нужна помощь, если это слишком плохо - PullRequest
0 голосов
/ 06 мая 2010

Hy,

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

Таблица, которая содержит 3 поля: id, view_name и layout. макет будет сериализованным хэшем. Когда запрос сделан, поле макета запрашивается и затем в представлении, макете по умолчанию, будет десериализован макет var, который выглядит следующим образом: @layout [: sidecol] [: gallery] = {... некоторые параметры для него ...}; @layout [: maincol] [: comments] = {..params ...};

В коде <% #ruby для рендеринга ячеек в @layout [: sidecol]%> будет некоторый код ruby, который будет перебирать @layout [: sidecol] и отображать все ячейки в нем. то же самое происходит в главном div.

Что ты думаешь?

Положительный по моему мнению: Более модульный контроллер используется только для почты легкое изменение структуры Проще реализовать какой-то вид отслеживания, чтобы увидеть различия в том, какой макет лучше или нет.

Отрицательный: еще не найден

EDIT:

1) Приходит запрос, вычисляется имя вида.

2) Загрузить из базы данных поле макета, соответствующее имени представления. (Это будет сохранено в кэше и будет обновляться только после внесения изменений. Я собираюсь использовать этот способ, потому что мне нужно будет протестировать макет. 33% макета 1, 33% макета 2 и 33% другого макета. Поэтому будет использоваться случайное число для выбора макета вида.)

3) Поле макета содержит: первое подразделение - это имя создаваемого div, затем в каждом из них будет больше компонентов, в данном случае именованных ячеек, которые будут созданы в контроллере приложения, потому что будут повторяться для всех запросов на получение.

4) В представлении будут созданы элементы div, которые будут отображаться в каждой определенной ячейке.

5) Ячейка сделает запрос к БД и загрузит данные.

6) Ячейка отобразит HTML-код и готова к работе!

1 Ответ

0 голосов
/ 06 мая 2010

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

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

Что касается вашего конкретного предложения, хранение данных макета, которые редко меняются между запросами, в вашей БД является ненужным ударом по производительности. Чтобы вытащить макет из вашей БД, десериализовать его и запустить, вам потребуется либо установить структуру кэширования, либо выполнить сумасшедшее масштабирование БД.

Между прочим, Rails3 и Merb (и я думаю, что даже Rails2) достаточно модульны на уровне контроллера, так что им все равно, откуда взялись ваши элементы компоновки / шаблонов / просмотра. Если вы действительно хотите, вы можете просто попросить их отобразить строку.

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