Включить разделители ERB внутри строки в блоке ERB

Я работаю над руководством по стилю, которое отображает код, а также вывод. В настоящее время он структурирован так, что код должен быть описан только один раз, и отображается как в необработанной, так и в интерпретированной версиях, например:

<% code = <<PLACE_THE_EXAMPLE_CODE_BETWEEN_THESE_TWO_LINES_EXACTLY_AS_YOU_WANT_IT_TO_APPEAR
<div>
  #{ image_tag 'image.png' }
</div>  
PLACE_THE_EXAMPLE_CODE_BETWEEN_THESE_TWO_LINES_EXACTLY_AS_YOU_WANT_IT_TO_APPEAR
%>

<%= raw code %>
<%= content_tag :pre, code, class: "prettyprint linenums" %>

Это здорово, и довольно легко поддерживать. Проблема приходит с помощниками рельсов, какimage_tag в приведенном выше примере. Пример представления правильно отображает изображение в div, а пример кода отображает соответствующий HTML. В этом случае соответствующий HTML-код включает в себя тег привязки - результатыimage_tag метод, а не сам вызов.

Я бы предпочел, чтобы примеры кода отображали вспомогательные методы, а не их результаты. Я могу сделать эту работу, указав пример кода в файле, а также либо рендеринга или чтения файла. Я бы предпочел сделать эту работу, указав код в переменной, как указано выше, но я не могу получить ограничитель ERB для работы внутри строки внутри блока erb. Даже самый простой случай<% foo = '<%= bar %>' %> не работает вообще. Я пытался играть с синтаксисом (<%% %%> а также% % например), используя детали изофициальная документациябез особого успеха.

Единственная информация, которую я смог найти по этому вопросу,Вот, с помощью<%= "<" + "%=" %> link_to <%= image.css_tag.humanize %> <%= "%" + ">" %> %>, который не работает в этом случае использования (если вообще).

Итак, есть ли способ указать строку, которая содержит конечный разделитель ERB (%>) в строке ERB, или я застрял, используя немного более грубый метод чтения файла? Спасибо!

Редактировать:

В итоге я хотел бы получить рабочую версию этого:

<%# Idealized code - does not work %>
<% code = <<PLACE_THE_EXAMPLE_CODE_BETWEEN_THESE_TWO_LINES_EXACTLY_AS_YOU_WANT_IT_TO_APPEAR
<div>
  <% image_tag 'image.png' %>
</div>  
PLACE_THE_EXAMPLE_CODE_BETWEEN_THESE_TWO_LINES_EXACTLY_AS_YOU_WANT_IT_TO_APPEAR
%>

Так что<%= raw code %> будет (продолжать) вывод:

<div>
  <img src="/images/image.png" alt="Image" />
</div>

А также<%= content_tag :pre, code, class: "prettyprint linenums" %> будет выводить:

<pre class="prettyprint linenums">
  <div>
    <% image_tag 'image.png' %>
  </div>  
</pre>

Вместо того, что он делает в настоящее время при использовании переменной, которая:

<pre class="prettyprint linenums">
  <div>
    <img src="/images/image.png" alt="Image" />
  </div>
</pre>

Я хочу, чтобы пользователи могли скопировать пример кода и вставить его в новое представление, без необходимости переводить HTML обратно в помощники, которые их создают. Я думаю, что мне в основном нужен альтернативный разделитель ERB, так же, как' а также" (или даже%q{}) меняются для строк. Кажется, что хотя конечный разделитель ERB находится внутри строки, он фактически обрабатывается как конец блока. Самый простой случай<% foo = '<%= bar %>' %> демонстрирует что-то, чего я хочу достичь. В генераторе вы можете использовать<% foo = '<%%= bar %>' %> (или что-то подобное), чтобы сказать это не обрабатывать как ERB прямо тогда и там. Все это прекрасно работает при чтении из файла или даже в чистом rb-файле (например, в виде помощника), но в данном случае имеет смысл поместить его в представление, так как оно предназначено для простого манипулирования нашим дизайнеры.

Ответы на вопрос(1)

Ваш ответ на вопрос