2011-02-24 106 views
0

我是全新的Ruby和Rails。Ruby on Rails HTML模板邏輯

我一直在問,以幫助修改網站的回報率有很多的遺留代碼,其中原開發商走了。當我看到再培訓局的HTML模板,我看到這樣的代碼在幾個地方:

<% if(@fullscreen == 1) %> 
<%= "<div class='full'><p>...</p></div>" %> 
<% end %> 

是否有第二行的<%=%>理由嗎?它似乎只是打印出精確的引用字符串,所以將<div>代碼本身放在沒有括號百分比書擋的那一行上沒有區別。當我把它拿出來的時候一切似乎都很好,但我不想錯過任何微妙的東西。

謝謝。

回答

3

<%= %>標籤意味着執行封閉Ruby代碼,並打印出它返回的HTML。

因爲在這種情況下,Ruby代碼只是一個字符串,有

<%= "<div class='full'><p>...</p></div>" %> 

<div class='full'><p>...</p></div> 

比在它的執行方式等沒有什麼區別。後者可能會更快一些,因爲它不需要執行任何Ruby代碼。

注意,如下面bunter提到的,這如果<p>標籤內省略了代碼不包含任何嵌入的Ruby代碼是唯一真正的,例如<p>#{@my_variable}</p>

1

沒有差異,只要這個省略號(...)不包含任何Ruby代碼。 也許你的開發者有一段代碼。純html不需要erb標籤。

T.

0

我同意,將增加只是一個額外的信息片 - 這問題,如果你是渲染JavaScript的模板是這樣的:

format.js {render :layout => false}. 

例如,下面的代碼發出代碼爲谷歌地圖一個JScript模板:

var student_latlng = new google.maps.LatLng("<%= student.geocode.latitude.to_s %>", "<%= student.geocode.longitude.to_s %>"); 

希望這有助於

拉斯

+0

如何,這是真的?如果你正在渲染JS並且在'<%= %>'內有純JavaScript,那麼爲什麼這不是沒有'<%= %>'? – 2011-02-24 21:12:59

+0

偉大的問題 - 答案是什麼是<%= %>之間不是純粹的JS代碼,而是Ruby。 – rhawkins 2011-02-28 14:53:19