我在這個格式的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