Ruby on Rails,利用View Templates生成动态页面
http://blog.csdn.net/abbuggy/article/details/7627133
《Ruby on Rails,在Controller中指定页面重定向》和《Ruby on Rails,在Controller中指定渲染的Templates》介绍了利用Controller指向绘制页面或者重定向请求的特性。我们来看看Templates是如何工作来充当View的角色的。其实之前我们已经在使用Template渲染页面了,只不过那些页面都是包含静态信息。静态页面用来充当页面跳转调试中使用的例子还好因为简单易写,其他时候用处不大;包含动态信息的页面才更能满足我们实际网站开发的需要。通过向Templates中增加Ruby语言脚本,我们可以向页面中嵌入动态信息。如此可以看出,Templates将会成为HTML与Ruby代码的混合体,就像JSP页面是向HTML中嵌入JAVA代码一样。嵌入的Ruby脚本被称作“ERb(Embedeed Ruby)”。Template的文件名为xx.html.erb,被称作名为xx的Template,经过ERb处理之后生成HTML页面。
使用<% code %>和<%= code %>标签向Templates中嵌入Ruby脚本。这两种标签中的code都会被执行,其中的区别是带有等号的方式将会把代码执行的结果输出到页面。修改名为hello的Template,分别使用两种标签为例。
<h1>Demo#hello</h1>
<p>Hello Page!</p>
without '='
"<% 1+1 %>"
<br/>
with '='
"<%= 1+1 %>"
<p>Find me in app/views/demo/hello.html.erb</p>
<% 1+1 %>中的内容没有输出,<%= 1+1 %>中的计算结果被输出到页面上。
对于同一个Template来说,嵌入的Ruby脚本处于同一空间,可以定义并访问变量。下面一行的脚本可以访问之前定义的局部变量。
<h1>Demo#hello</h1>
<p>Hello Page!</p>
<% name="abbuggy" %>
<%= "Hello #{name} !"%>
<p>Find me in app/views/demo/hello.html.erb</p>
再来个循环的
<h1>Demo#hello</h1>
<p>Hello Page!</p>
<% name="abbuggy" %>
<%= "Hello #{name} !" %>
<% for i in 0..name.length do %>
<br/><%= name[i] %>
<% end %>
<p>Find me in app/views/demo/hello.html.erb</p>