我的工作风格指南,显示代码,以及输出。 这是目前的结构,这样的代码只需要进行一次说明,并同时显示在其原始和解释的版本,像这样:
<% 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文件(如助手)但它最有意义把它的观点,在这种情况下,因为它是要由我们的设计师很容易被操纵。