2009-12-17 2 views
0

Мой вопрос очень прост. Я спрошу его сначала, если ответ будет очевиден, и тогда я объясню, что я имею в виду, если это не очевидно.Вызов основного «урожая» приложения рельсов от частичного

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


Объяснение ...

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

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

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

У меня есть следующие в моем макете:

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

ДИВ содержание 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 и избавиться от частичного? Кажется, это не вызывает никаких проблем, но я хотел бы знать, что я делаю что-то неправильно, прежде чем заходить слишком далеко.

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

ответ

1

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

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

спасибо. это как раз то, как я это делал, и, честно говоря, я думаю, именно так мне придется продолжать это делать. Я думаю, что это проще, и поскольку я работаю с другими дизайнерами, это может подойти им больше, если это будет сделано именно так. Спасибо. Не могу поверить, сколько времени я провел, обсуждая это! – stephenmurdoch

Смежные вопросы