2010-08-31 54 views
0

我一直在努力ROR .. 我是很新的ROR ..Rails的嵌入語法疑問

誰能告訴我是什麼<%=%之間的差額>和<%= H%>

爲什麼我們在這裏?

在某些情況下,我已經看到了一下T^h ..

請澄清我

回答

2

<%=h %>語法轉義字符,否則會弄亂你的頁面(例如「&」)。它實際上是一個稱爲'h'的輔助方法。所以:

<%=h "Ann & Bill" %> 

將擴大到Ann &amp; Bill

<%= "Ann & Bill" %> 

將擴大到Ann & Bill,這可能不是你在你的HTML想要的東西。

+2

你可能想引號添加到您的字符串,還是你意思是二元 - 常量Ann和Bill? :-) – DarkDust 2010-08-31 08:50:24

2

<%=%>之間的所有內容都被評估爲Ruby代碼,並將生成的字符串插入到文檔中(實際上是ERb,它可以用於任意文檔,而不僅僅是HTML)。在這種情況下,它會調用一個簡單的方法h,它轉義了它的參數。所以我猜你看到的更像是<%=h @somevar%>。所以@somevar的內容被方法h轉義,並且返回字符串被插入到這個整個表達式的地方。

存在其他ERb的語法是<% ... %>評估Ruby代碼但不插入結果到文檔中,然後有也<% ... -%><%= ... -%>抑制隨後的換行,從而避免了所呈現的文檔中的間隙。

1

現在Rails 3已經發布了,請注意,從這裏開始的默認行爲是自動轉義<%=%>標記中的所有內容。因此,XSS(跨站點腳本)保護始終處於開啓狀態,因此使用冗餘。這可能會咬你,如果/當你從Rails 2升級你的應用程序。

這個Railscast(http://railscasts.com/episodes/204-xss-protection-in-rails-3)給出了上面的一個很好的入門。

如果你想這種行爲在Rails 2.3的應用程序,你可以使用http://github.com/rails/rails_xss(用於2.3.8)或http://github.com/NZKoz/rails_xss(用於2.3.5)