2.3.2 改进“浏览留言”
我们希望当用户成功登录系统后,首先进入浏览留言页面,这需要修改user_controller.rb控制器文件中的login方法,将合法用户登录成功后重定向到message控制器中的list Action。代码片段如下:
redirect_to :controller=>"message", :action=>"list" |
def list |
上面的list Action里使用了Rails提供的分页查询支持,通过这种分页查询支持,可以非常方便地以分页方式列出所有留言。
与该list Action对应的视图文件是/app/views/message路径下的list.rhtml文件。其中,用于列出所有留言内容的代码片段如下:
<table width=100% border=0 align="center" cellpadding="0" cellspacing="0" bgcolor="#BFCAE6"> |
修改后的list页面比原来的代码丰富了很多,主要是增加了设置奇数行和偶数行的CSS样式,只显示标题的前25个字符,格式化日期的显示方式,以及为有贴图的留言显示“有图”字样。
值得注意的是,在上面的代码中,Message对象调用user实例方法,来返回该对象对应的User对象。读者可能觉得奇怪,哪里定义的user实例方法呢?因为Message Model和User Model是两个关联实体,且Message Model是User Model对应的从表实体,所以,在message.rb模型文件中加入如下代码:
# 调用Rails中的belongs_to方法,声明Message对象是User对象的从表对象 |
即可由belongs_to提供一系列方便地操作关联对象的实例方法,其中就有user实例方法。这样,当Message对象调用user实例方法时,就能十分方便地查找到它所对应的User对象,而不需要通过如下代码来返回User对象。
user_id=message.user_id |
这种方式是先查询出留言对象的user_id,再通过这个user_id查找到对应的User对象。相比之下,我们在Rails中仅仅调用一个belongs_to方法,即可实现同样的功能,代码要简洁得多。
由于list.rhtml文件中调用了自定义的has_picture?方法,来查询留言是否有贴图,所以需要在message.rb模型文件中定义该方法。代码如下:
# 设置允许上传的图片文件最大为50 kb |
该方法的定义中,先判断Message对象的picture_content_type属性值是否为nil;如果不为nil,再判断是否存在合法的上传图片。也就是,仅当Message对象的picture_content_type属性值为图片类型的值,且文件大小不超过允许上传的最大图片的大小时,has_picture?方法才返回true,其他情况均返回false。
另外,由于list.rhtml文件中调用了自定义的show_date帮助方法,来返回格式化的日期形式,因而,需要在/app/helpers路径下的message_helper.rb文件中定义该方法。代码片段如下:
def show_date(date) |
该方法用于格式化需要显示的日期,使之符合我们的计时习惯。
控制器中不需要修改scaffold生成的代码。当用户使用这个应用成功登录后,就会进入浏览留言的页面。
| 回书目 上一节 下一节 |
|
· 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. · 软件项目估计:第2版 |
· 系统分析师基础知识自.. · 构建可扩展的Web站点的.. · 2008年全国计算机等级.. · 网络数据安全与保密自.. · 博客园开发者征途:.NE.. · ASP.NET 2.0 WEB开发入.. |
|
||||
| · 2008年春季英特尔信息.. · 技术人求职简历完备手册 · 国际文档格式标准开战 · WCF开发基础 · Visual Studio 2005开.. · Linux——从菜鸟到高手 · 如何优化IT 控制能耗 · SQL Server入门到精通 |
· SQL Server 2008/2005.. · 贝恩资本携手华为22亿.. · ARP攻击防范与解决方案 · 初探敏捷开发 · 体验Visual Studio 200.. · SOA 面向服务架构 · CISSP认证成长之路 · 隐私保护技术探讨 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · SQL Server入门到精通 |
· 病毒查杀专题 · 国际文档格式标准开战 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · SOA 面向服务架构 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 |
· 病毒查杀专题 · 清除流氓软件——51CTO.. · Sniffer安全技术从入门.. · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 |
|||