我在这个格式的HTML文件:为什么注释掉的ERB仍会抛出错误?
html
more html
<%= valid erb %>
<!--
<%= incomplete_erb_with_bugs %>
-->
但我仍然得到一个异常页面,因为车再培训局。但是不应该评论该部分导致该部分不被浏览器读取?是否有另一种HTML方法可以防止浏览器读取代码?
我在这个格式的HTML文件:为什么注释掉的ERB仍会抛出错误?
html
more html
<%= valid erb %>
<!--
<%= incomplete_erb_with_bugs %>
-->
但我仍然得到一个异常页面,因为车再培训局。但是不应该评论该部分导致该部分不被浏览器读取?是否有另一种HTML方法可以防止浏览器读取代码?
因为它没有评论。
但不应该评论该部分出来导致该部分不是由浏览器读取的 ?
浏览器不执行Ruby或ERB - 服务器在将最终的HTML文档发送到浏览器之前不执行。
ERB是嵌入在包含文本文本的文件中的ruby代码。解释器不关心除“erb标签”中的代码之外的任何内容。
This is just literal text
<%# this is a ruby line comment - the code below is executed: %>
<% bar do %>
<%= foo %>
<% end %>
其余的只是放在缓冲区。这就像PHP或任何其他嵌入式语言。
因此,HTML注释(或CSS或JS)不会影响ERB解释器。解释器并不真正了解或关心它的创建HTML。
是否有另一种HTML方法可以实际阻止浏览器读取代码?
浏览器不执行Ruby代码。它只是从响应中发送的任何内容构建一个文档。
因此,使用红宝石注释<%#= incomplete_erb_with_bugs %>
这将阻止代码被执行 - 它永远不会被发送到浏览器。
这是为单行注释。对于多行注释,请参阅http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails。 – max
你正在评论html,但它里面的ruby代码仍然被评估。你需要注释掉的代码,它是这样完成的:
<%#= incomplete_erb_with_bugs %>
你需要注释的实际线,不是周围
html
more html
<%= valid erb %>
<%= incomplete_erb_with_bugs %>
,你也可以使用HTML if语句
<% if false %>
<%#= incomplete_erb_with_bugs %>
<% end %>
[阻止在html.erb模板中的注释]的重复(http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails) – burnettk