Как обрезать начальные пробелы с помощью `<% =` в шаблонах ERB в Rails, которые заканчиваются элементами `pre`?
(Насколько я здесь исследовал, это не повторяющийся вопрос. Обрезание пробелов - часто заканчивающихся символами новой строки - обсуждается для <%-
или же -%>
, но не для <%=
, Это также может быть незначительным дефектом в шаблонном движке Erubi, который используется Rails для шаблонов ERB.)
Я хочу визуализировать / выделить синтаксис кода в представлении, и мой шаблон представления ERB содержит:
<p>
<strong>Code:</strong>
<pre class="highlight github">
<%= highlight(@code.code, @code.language) %>
</pre>
</p>
Результатом является то, что вывод HTML:
<p>
<strong>Code:</strong>
<pre class="highlight github">
<span class="kt">[and here's the code, but indented too much]</span>
</pre>
</p>
Из-за pre
В теге, пробелы перед первой строкой кода включаются в HTML и, таким образом, отображаются, в результате чего первая строка кода имеет отступ с четырьмя пробелами.
Очевидно, я также могу сделать шаблон представления ERB как:
<p>
<strong>Code:</strong>
<pre class="highlight github">
<%= highlight(@code.code, @code.language) %>
</pre>
</p>
но это выглядит некрасиво (потому что отступы отключены) в моем представлении шаблона.
Вопрос: как мне сделать <%=
также проглотить ведущие пространства? Я знаю что используя -%>
закрывающий тег удаляет завершающие пробелы / переводы строк... но я хочу, чтобы также были удалены начальные пробелы (не только переводы строк).
0 ответов
Попробуйте использовать concat
вспомогательный метод с тегом ERB, который начинается с <%
вместо <%=
:
<p>
<strong>Code:</strong>
<pre class="highlight github">
<% concat(highlight(@code.code, @code.language)) %>
</pre>
</p>