Rails中一些特殊地方

1.-%>

<%3.timesdo%>

Ho!<br/>

<%end%>

MerryChristmas!

这会生成下列HTML:Downloaderb/ex2.op

Ho!<br/>

Ho!<br/>

Ho!<br/>

MerryChristmas!

可以看到,每当Ruby循环执行一次,其中的文本都会被发送到输出流。

但这里还是有些不大容易理解的事情:这些空行是从哪里来的?它们来自输入文件。认真想想就会发现,模板源文件在第一行与第三行的“%>”标记后面都加上了换行符。模板经过渲染之后,<%3.timesdo%>这句代码消失了,换行符却留了下来。循环每执行一次,输出的内容中就增加一个换行符,然后才是“Ho!”这行文字。同样的,<%end%>代码后面的换行符被插入到了最后一个“Ho!”与“MerryChristmas!”之间。

一般而言,这不是什么大问题,因为HTML并不关心空白字符。不过,如果你用模板机制来创建电子邮件,或是生成的HTML中包含<pre>代码块,就需要去掉这些空行。为此,只要把html.erb代码的结尾标记由“%>”改为“-%>”即可,这里的减号就会告诉Rails将紧随其后的换行符全部去掉。如果我们给“3.times”这句代码的结尾标记加上一个减号:

<%3.timesdo-%>

Ho!<br/>

<%end%>

MerryChristmas!

我们就会得到下列输出9:

Ho!<br/>

Ho!<br/>

Ho!<br/>

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

相关推荐