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