コードと出力を表示するスタイルガイドに取り組んでいます。現在、コードを1回だけ記述する必要があるように構成されており、次のように、未加工バージョンと解釈済みバージョンの両方で表示されます。
<% 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区切り文字だと思います。最終的なERB区切り文字が文字列内で発生している場合でも、実際にはブロックの終わりとして処理されているようです。の最も単純なケースは、私が達成したいことをいくらか示しています。ジェネレーターでは、"
%q{}
<% foo = '<%= bar %>' %>
<% foo = '<%%= bar %>' %>
(または同様のもの)、その場でERBとして処理しないように指示します。これはすべて、ファイルから読み取る場合、または純粋なrbファイル(ヘルパーなど)でも正常に機能しますが、この場合は、ビューに配置するのが最も理にかなっています。これは、ファイルから簡単に操作できるようにするためです。デザイナー。