格式化助手
视图的一个重要功能就是可以将从Controller传过来的数据进行格式化,以便用户更容易理解这些数据。RoR提供的格式化助手就是用来完成这个功能的。格式化助手主要可以格式化三类信息:数字、日期和文本。下面将讨论如何使用格式化助手对这些信息进行格式化。
数字和日期格式化
格式化助手可以进行多种的转换工作,如将本地时间转换成另外一种形式,将数字转换成货币类型、百分比或电话号,下面是一些转换的例子: <%= distance_of_time_in_words(Time.now, Time.local(2006, 11, 1)) %>
将得到4或其它的数字(根据你运行它的日期不同而不同)
<%= distance_of_time_in_words(Time.now, Time.now + 40, false) %>
将得到1分钟(40表示秒)
<%= number_to_currency(99.99) %>
将得到$99.99
<%= number_to_percentage(66.6666) %>
将得到 66.667%
<%= number_to_percentage(66.66666, :precision => 1) %>
将得到 66.7%
<%= number_to_phone(1125551212) %>
将这个数字转换为 112-555-1212
格式化文本
同样,格式化助手也可以格式化文本。格式化操作包括截取字符串,加亮显示字符串中的子字符串,甚至可以将一个单词转换成复数。下面是一些字符串的例子:
替换字符串的子串
<%= excerpt(@str, "you", 8) %>
如果@str中的字符串是 "I love …",那么就应该返回"I love you"
<%= highlight(@str, "love") %>
如果@str中的字符串是"I love you."
那应该显示:
I <strong class="highlight">love</strong> you.
在字符串转换中,最有意思转换可能就是将英文单词的单数形式转换成复数形式(你可以用这个功能查一下单词的复数形式是什么)。
<%= pluralize(2, "person") %>
显示 2 people.
分页
在第一部分我介绍了分页的概念。在这部分我将讨论如何通过RoR使分页变得更容易。RoR通过控制层和视图层实现分页。在控制层,RoR的分页系统控制从数据库中得到的记录。在视图层显示从控制层得到的数据,以及用于分页显示的导航条。下面的例子描述了将users表分页显示的过程:
控制层的实现:
在控制层,分页必须按如下代码实现:
def user_list
@user_pages, @users = paginate(:users, :order_by => 'name')
end
以上代码通过paginate方法设置的分页器。这个方法有两个参数,第一个参数是要读取数据的表的名子,第二个参数是在取数据时要排序的字段。这个方法返回两个对象,第一个对象@user_pages是分页器对象, 第二个对象 @users 是每一页的记录数。其中@users用来向视图提供要显示的数据。 而@user_pages负责从表中得到数据,然后将这些数据保存在@users中。
视图层的实现:
在视图层的RHTML文件中,@users中的数据将被展现给用户。pagination_links()方法可以实现导航的功能。以下是具体的实现代码:
<table>
<tr><th>姓名</th></tr>
<% for user in @users %>
<tr><td><%= user.name %></td>
<% end %>
</table>
<hr>
<%= pagination_links(@user_pages) %>
<hr>
看看上面的代码是不是很简单!!
视图的一个重要功能就是可以将从Controller传过来的数据进行格式化,以便用户更容易理解这些数据。RoR提供的格式化助手就是用来完成这个功能的。格式化助手主要可以格式化三类信息:数字、日期和文本。下面将讨论如何使用格式化助手对这些信息进行格式化。
数字和日期格式化
格式化助手可以进行多种的转换工作,如将本地时间转换成另外一种形式,将数字转换成货币类型、百分比或电话号,下面是一些转换的例子: <%= distance_of_time_in_words(Time.now, Time.local(2006, 11, 1)) %>
将得到4或其它的数字(根据你运行它的日期不同而不同)
<%= distance_of_time_in_words(Time.now, Time.now + 40, false) %>
将得到1分钟(40表示秒)
<%= number_to_currency(99.99) %>
将得到$99.99
<%= number_to_percentage(66.6666) %>
将得到 66.667%
<%= number_to_percentage(66.66666, :precision => 1) %>
将得到 66.7%
<%= number_to_phone(1125551212) %>
将这个数字转换为 112-555-1212
格式化文本
同样,格式化助手也可以格式化文本。格式化操作包括截取字符串,加亮显示字符串中的子字符串,甚至可以将一个单词转换成复数。下面是一些字符串的例子:
替换字符串的子串
<%= excerpt(@str, "you", 8) %>
如果@str中的字符串是 "I love …",那么就应该返回"I love you"
<%= highlight(@str, "love") %>
如果@str中的字符串是"I love you."
那应该显示:
I <strong class="highlight">love</strong> you.
在字符串转换中,最有意思转换可能就是将英文单词的单数形式转换成复数形式(你可以用这个功能查一下单词的复数形式是什么)。
<%= pluralize(2, "person") %>
显示 2 people.
分页
在第一部分我介绍了分页的概念。在这部分我将讨论如何通过RoR使分页变得更容易。RoR通过控制层和视图层实现分页。在控制层,RoR的分页系统控制从数据库中得到的记录。在视图层显示从控制层得到的数据,以及用于分页显示的导航条。下面的例子描述了将users表分页显示的过程:
控制层的实现:
在控制层,分页必须按如下代码实现:
def user_list
@user_pages, @users = paginate(:users, :order_by => 'name')
end
以上代码通过paginate方法设置的分页器。这个方法有两个参数,第一个参数是要读取数据的表的名子,第二个参数是在取数据时要排序的字段。这个方法返回两个对象,第一个对象@user_pages是分页器对象, 第二个对象 @users 是每一页的记录数。其中@users用来向视图提供要显示的数据。 而@user_pages负责从表中得到数据,然后将这些数据保存在@users中。
视图层的实现:
在视图层的RHTML文件中,@users中的数据将被展现给用户。pagination_links()方法可以实现导航的功能。以下是具体的实现代码:
<table>
<tr><th>姓名</th></tr>
<% for user in @users %>
<tr><td><%= user.name %></td>
<% end %>
</table>
<hr>
<%= pagination_links(@user_pages) %>
<hr>
看看上面的代码是不是很简单!!