2011-02-24 57 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