2017-04-25 70 views
0

我在這個格式的HTML文件:爲什麼註釋掉的ERB仍會拋出錯誤?

html 
more html 
<%= valid erb %> 

<!-- 
    <%= incomplete_erb_with_bugs %> 
--> 

但我仍然得到一個異常頁面,因爲車再培訓局。但是不應該評論該部分導致該部分不被瀏覽器讀取?是否有另一種HTML方法可以防止瀏覽器讀取代碼?

+0

[阻止在html.erb模板中的註釋]的重複(http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails) – burnettk

回答

3

因爲它沒有評論。

但不應該評論該部分出來導致該部分不是由瀏覽器讀取的 ?

瀏覽器不執行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 %>這將阻止代碼被執行 - 它永遠不會被髮送到瀏覽器。

+0

這是爲單行註釋。對於多行註釋,請參閱http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails。 – max

2

你正在評論html,但它裏面的ruby代碼仍然被評估。你需要註釋掉的代碼,它是這樣完成的:

<%#= incomplete_erb_with_bugs %> 
1

你需要註釋的實際線,不是周圍

html 
more html 
<%= valid erb %> 


    <%= incomplete_erb_with_bugs %> 

,你也可以使用HTML if語句

<% if false %> 
     <%#= incomplete_erb_with_bugs %> 
<% end %> 
相關問題