Ruby on Rails:动作视图纵览
布局
在模板中可以通过布局提供子模板。这就意味着RoR可以通过布局进行嵌套操作。布局提供了一个典型网页的各种组成部分,如菜单、页脚等。下面是一个简单的关于布局的例子。
<html>
<head>
<title>Form: <%= controller.action_name %></title>
<%= stylesheet_link_tag 'scaffold' %>
</head>
<body>
<%= @content_for_layout %>
</body>
</html>
上面的代码是一个标准的HTML布局。最值得关注的是变量@content_for_layout。这个变量中保存了从控制层传过来的数据。下面代码演示了如何从控制层传递数据到一个RHTML文件:
def method
@msg ="测试!"
end
下面是method.rhtml 文件中的代码:
<h1><%= @msg %></h1>
变量@content_for_layout 的内容如下:
<h1>测试!</h1>
由布局生成的HTML代码如下:
<html>
<head>
<title>Form: method</title>
<link href="/stylesheets/scaffold.css" media="screen" rel="Stylesheet" type="text/css"/>
</head>
<body>
<h1>测试!</h1>
</body>
</html>
上面的例子只是简单地演示了如何使用布局。在RoR提供的自动生成代码机制中的scaffold就是使用布局来生成的输出文件。在下一部分将给一个简单的例子来演示如何使用模板和格式化技术。
实例
在这个例子中显示了一些被格式化的时间、字符串和数字。
下面的代码是控制层的代码:
class SayController < ApplicationController
def hello
@time=Time.now
end
end
下面是视图层(这个文件就是一个模板)的代码:
<html>
<head>
<title>你好!</title>
</head>
<body>
<h1>现在报时:<%=@time%></h1>
</body>
</html>
现在让我们使用格式化功能:
class SayController < ApplicationController
def hello
@time=Time.now
@rule="This is a rule"
@price=123
end
end
下面在视图中使用格式化助手进行格式化:
<html>
<head>
<title>你好!</title>
</head>
<body>
<br>现在报时:<%=@time%>
<br>时间间隔:<%= distance_of_time_in_words(@time, Time.local(2006, 10, 11)) %>
<br>高亮度显示rule:<%= highlight(@rule, "rule") %>
<br>将123转换成美元:
<%= number_to_currency(@price) %>
</body>
</html>
0
相关文章