Разбор шаблона в рельсах (альтернативы gsub) - PullRequest
1 голос
/ 22 августа 2009

В моем приложении CMS rails есть система 'template'. По сути, весь HTML-шаблон хранится в столбце базы данных, и он содержит ключевой код в строке (например, <!--THEME_Body-->), который заменяется содержимым, созданным приложением.

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

<%= generate_theme.gsub!('<!--THEME_Body-->', yield) -%>

Этот помощник выбирает правильную тему, а также другие области, такие как метаданные и хлебные крошки.

Мне просто интересно, есть ли лучший способ сделать это? Возможно, используя content_for или что-то в этом роде?

1 Ответ

1 голос
/ 22 августа 2009

Это довольно хороший способ для этого, хотя я бы использовал сексуальный синтаксис Руби, чтобы объединить все строки во что-то более синтаксически правильное - это ускоряет сценарий и выглядит чертовски приятнее!

tags = {
    '<!--THEME_Body-->' => yield,
    '<!--THEME_Head-->' => yield(:head),
    '<!--STYLESHEET-->' => stylesheet_link_tag('application')
}

tags.each { |str, rep| generate_theme.gsub!(str, rep) }

Имейте в виду, что этот код не должен идти в представлении - в идеале он должен быть помещен в модель, как это происходит с данными приложения, но он также может куда-то пойти в качестве помощника. Если это переменная экземпляра в модели, вы можете просто вызвать

generate_theme.parse

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

Jamie

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