Несколько макетов против css-хитрости против партиалов в приложении rails для динамического макета страницы - PullRequest
0 голосов
/ 16 декабря 2010

Мне было интересно, кто-нибудь мог бы прокомментировать, какой путь лучше и ПОЧЕМУ?

Вот упрощенная версия того, что у меня есть (в HAML):

#header
#root
  #content
    = yield
  #sidebar
    = context_navigation
#footer

Проблема:

Я хочу, чтобы #sidebar отображался на некоторых страницах для отображения контекстного меню, например, на странице учетной записи для отображения ссылок на профиль, пароль, историю заказов.На странице продукта отображаются ссылки на спецификации продукта, описание, «отправить ссылку» и т. Д. Но не на других страницах - например, на главной странице мне нужно использовать всю ширину #root для #content, чтобы показывать новости или избранные элементы..

Решение и вопрос:

У меня есть несколько идей о том, как это реализовать, но я искал какой-то вклад в то, какой из них вы считаете лучшим, и, пожалуйста, объясните, ПОЧЕМУ?Основная цель - ремонтопригодность кода.

Вот несколько идей:

  1. Обман CSS \ SCSS - сделать боковую панель разборным элементом div, если там контекстная навигация пуста
  2. Используйте else / if для загрузки различных партиалов в зависимости от того, на какой части сайта я нахожусь.
  3. Создайте отдельный макет (кажется излишним - насколько я понимаю, макеты должны использоваться в основном для разных носителей)такие как экран против печати, PDF против мобильного и т. д.)
  4. Любые другие идеи?

Спасибо,

Ник

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Вы можете использовать вложенные макеты, чтобы заставить это работать:

http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts

0 голосов
/ 16 декабря 2010

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

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