Rails中一些特殊地方

1. -%>
<% 3.times do %>
Ho!<br />
<% end %>
Merry Christmas!
这会生成下列 HTML: Download erb/ex2.op
Ho!<br />
Ho!<br />
Ho!<br />
Merry Christmas!
可以看到,每当Ruby 循环执行一次,其中的文本都会被发送到输出流。
但这里还是有些不大容易理解的事情:这些空行是从哪里来的?它们来自输入文件。认真想想就会发现,模板源文件在第一行与第三行的“%>”标记后面都加上了换行符。模板经过渲染之后,<% 3.times do %>这句代码消失了,换行符却留了下来。循环每执行一次,输出的内容中就增加一个换行符,然后才是“Ho!”这行文字。同样的,<% end %>代码后面的换行符被插入到了最后一个“Ho!”与“Merry Christmas!”之间。
一般而言,这不是什么大问题,因为HTML 并不关心空白字符。不过,如果你用模板机制来创建电子邮件,或是生成的HTML 中包含<pre>代码块,就需要去掉这些空行。为此,只要把html.erb代码的结尾标记由“%>”改为“-%>”即可,这里的减号就会告诉Rails 将紧随其后的换行符全部去掉。如果我们给“3.times”这句代码的结尾标记加上一个减号:
<% 3.times do -%>
Ho!<br />
<% end %>
Merry Christmas!
我们就会得到下列输出9:
Ho!<br />
Ho!<br />
Ho!<br />

2. %{„}这样的符号。这是字符串字面量的另一种写法——就跟双引号一样,不过更适用于长字符串。

猜你喜欢

转载自greybeard.iteye.com/blog/1347197