2

コードで奇妙なゆがみを経験することなくコードブロックを表示できるようにする単純なパーシャルを作成しようとしています。

だから私は部分的にこれをしました:

<% lang ||= "" %>
<% language = "lang='#{lang}'" %>

<div class="codebox">
        <% if title %>
            <h3><%= title %></h3>
        <% end %>
    <pre <%= language %>><%=text.unindent%></pre>
</div>

そして、これは文字列のインデントを解除するためのlibにあります(非常に素晴らしいSOの提案に感謝します):

class String
    def unindent; gsub(/^#{scan(/^\s+/).min}/, "") end
end

次に、これを実行して、非常に小さなコードボックスを取得できます。

<%= render partial: 'pre', locals: { title: "example.html", lang: 'html', text: "
                <div class='cl' style='text-align:center'>
                  <div class='collapse-group'>
                        <!-- Title, always viewable --> 
                        <a class='bundle' href='#'>'Click here to expand'</a> 
                    <div class='collapse'>
                        <!-- The content to be hidden or shown -->
                    </div> 
                  </div>
                </div>
                "} %>

これはこれに変わります:

ここに画像の説明を入力してください

私がたくさんのerbを入れない限り、それは魅力のように機能します。エラープロデューサーの例(内容はあまり関連性がありません。「文字列」が一重引用符であるのに対し、内のすべての引用符が二重であることを確認しました):

<%= render partial: 'pre', locals: { title: "example.html", lang: 'html', text: '
                <% sub ||= "" %>
                <% term ||= "(expand)" %>
                <% style ||= "" %>

                <div class="cl" style="text-align:center">
                <div class="collapse-group">
                    <<%=tag%> class="squeeze" style=<%="#{style}"%>> 
                        <%=title%> 
                        <% if sub != "" %> 
                            <small><%= sub %></small>
                        <% end %>
                        <a class="bundle" href="#"><%= term %></a> 
                    </<%=tag%>>
                <div class="collapse">
                ' } %>

いずれにせよ、これらの引用符の中に入れているのは100%リテラル文字であるとhtmlに伝えることができますか?">"と">"と"%"などを個別にエスケープしてみましたが、これは厄介な(そして効果のない)パスであり、下がらないことを望んでいます。

上記のように見せたいものの例:

ここに画像の説明を入力してください

4

1 に答える 1