2010-07-12 2 views
0

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

ответ

3

Я использовал бы вспомогательный content_for (Rails Guide) (API).

В Haml, это будет выглядеть примерно так:

(шаблон макета)

#sidebar= yield :sidebar 

(шаблон страницы)

-content_for :sidebar do 
    ...your content here 
+0

Спасибо, тонна! Это именно то, что мне нужно. Есть ли какой-нибудь частичный для content_for? – Teddy

+0

content_for принимает блок (говоря о котором, я заметил, что я пропустил «сделать» в начале этого блока в своем ответе) - внутри этого блока вы можете делать все, что вы могли бы сделать в обычном шаблоне Haml, в том числе частичные части рендеринга и т. д. –

1

Если вы работаете с профессиональными дизайнерами, которые обращаются взгляды, в долгосрочной перспективе может быть проще иметь довольно повторяющийся код представления. Некоторым людям трудно найти частичные части и «видеть», как они все подходят друг другу. Мне было легче, когда эти люди позволяли им управлять всем сайбангом и обновлять более одного файла, если это необходимо. Оптимальное? Не нам как программисты, но дизайнеры все чаще привыкли видеть большую часть HTML в один или три файла, а не 20. :)

использовать парциальные как можно больше, чтобы сохранить ваш код DRY

эту ссылку Помощь

http://guides.rubyonrails.org/layouts_and_rendering.html

+0

Первый абзац этого скопирован из ответа Яна Терелла [здесь] (http://stackoverflow.com/questions/926761/best-practices-for-using-partials-in-rails/926941# 926941). Теперь это просто грубо. – sepp2k

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