Подтвердить что ты не робот

Rails с шаблонами Underscore.js

Я пытался использовать шаблоны underscore.js для шаблонов в приложении rails 2.3, в котором не есть jammit в качестве пакета ресурсов.

Вот простой шаблон:

<script type="text/template" id="q-template">
    <div class="current-body">
        <span class="q-index"><%= title %></span>
        <span class-"q-text"><%= body %></span>
    </div>
</script>

Rails пытается проанализировать их как erb-переменные и выдает ArgumentError. Как мне получить шаблоны подчеркивания, чтобы хорошо играть с рельсами в этом случае? Где я ошибаюсь?

4b9b3361

Ответ 1

Используйте другие разделители вместо <%= %>. Например, чтобы использовать скобки в стиле усы {{= }} (интерполировать) и {{ }} (оценить), добавьте это где-то в свой javascript:

_.templateSettings = {
    interpolate: /\{\{\=(.+?)\}\}/g,
    evaluate: /\{\{(.+?)\}\}/g
};

Ответ 2

Если вы не хотите изменять настройки шаблона во всем проекте...

Побег тегов ERB: <%= становится <%%=

<script type="text/template" id="q-template">
    <div class="current-body">
        <span class="q-index"><%%= title %></span>
        <span class-"q-text"><%%= body %></span>
    </div>
</script>

Обратите внимание, что закрывающий тег по-прежнему %>, а не %%>.


Боковое примечание. Я также попытался вывести его с помощью heredoc. Следующий код работает успешно, но выводит кучу исходного кода erb, который попадает между командами heredoc.

<script type="text/template" id="q-template">
<%= <<-heredoc %>
    <div class="current-body">
        <span class="q-index"><%%= title %></span>
        <span class-"q-text"><%%= body %></span>
    </div>
heredoc
</script>