Вызов основного «выхода» приложения рельсов из частичного - PullRequest
0 голосов
/ 17 декабря 2009

Мой вопрос очень прост. Сначала я спрошу его, если ответ очевиден, а затем объясню, что я имею в виду, если он не очевиден.

Считается ли нормальным делать ваш основной вызов yield из частичного вместо того, чтобы делать это прямо из вашего файла layout.html.haml? Это приводит к потере производительности.


Пояснение ...

У меня есть один файл макета, который называется application.html.haml.

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

Если есть боковая панель, то я хочу, чтобы основное содержимое занимало 66% ширины страницы, а боковая панель - оставшееся пространство.

В моем макете есть следующее:

#content
  - if show_sidebar?    
    #main
      = yield
    #sidebar
      = yield(:sidebar)
  -else
    = yield

Div содержимого составляет 100% ширины страницы. Если боковой панели нет, результаты «yield» входят в этот div. Если есть боковая панель, то основной выход идет в div с именем #main, который составляет 66% ширины страницы.

Отлично, все отлично работает.

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

#content
  - if show_sidebar?
    - render :partial => 'main_with_sidebar'
  -else
    = yield

А потом в частичном _main_with_sidebar.html.haml У меня есть это:

    #main
      = yield
    #sidebar
      = yield(:sidebar)

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

И поэтому мой вопрос касается того, считается ли это наилучшей практикой. Или я должен просто придерживаться немного более сложного файла application.html.haml и избавиться от частичного? Кажется, это не вызывает никаких проблем, но я хотел бы знать, делаю ли я что-то не так, прежде чем зайти слишком далеко.

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

1 Ответ

1 голос
/ 17 декабря 2009

Я бы просто создал новый макет для "макета с боковой панелью"

views/layouts/application.html.haml
views/layouts/sidebar.html.haml
...