您所在的位置: 首页 > 读书频道 > 设计开发 > 其它开发 >

4.4.2 文章控制器(1)

http://book.51cto.com  2008-10-08 13:53  [英] Alan Bradburne著,柳靖译  人民邮电出版社  我要评论(0)
  • 摘要:《Ruby on Rails 社区网站开发》第4章我们将分析如何实现在首页上展示滚动的新闻列表。这个功能会涉及提供新闻的RSS和Atom Feed以及提供新闻特征的API。RSS和Atom Feed允许用户使用RSS新闻阅读器来订阅新闻,当有新文章发布的时候,它们还会自动提示用户。本节说的是文章控制器。
  • 标签:网站  控制器  视图  REST资源  MySQL  Ruby on Rails 社区网站开发

4.4.2 文章控制器

使用Rails的generate命令来创建文章控制器。

 

文章控制器拥有与页面控制器和用户控制器相同的模式,但加强了其中一些方法的功能。

编辑app/controllers/articles_controller.rb文件的index方法。

 

1. 分页

首先需要注意的是,我们没有使用常规的find方法来获取文章集合,而是使用了paginate辅助方法。使用这种方法,可以轻松地为大量条目信息编制页码、自动创建页面链接以及返回一些有用信息,比如条目的总数和总页数。

index方法中的分页器仅返回那些published属性为true的文章。分页器会按照published_at字段中的时间来对文章进行排序,默认每页显示10条记录。你可以通过修改paginate命令中的参数来覆盖分页器的现有功能。通过指定:limit参数,你可以修改每页默认显示的条目数。

辅助方法返回了指定的文章结合,即一个Paginator类的实例。从这个类实例中,你可以检索出包括当前页码和总页数在内的信息。这些信息可用于创建到集合中其他页面的链接。

paginate方法还将:include参数指定为:user。这样一来,应用程序会通知ActiveRecord自动检索所有与Article对象相关联的User模型。具体实现过程是:首先构造一条用于表连接的SQL语句,然后通过执行一次SQL查询来检索两个表。如果没有指定:include参数,则每当代码试图引用Article类实例指定的用户时,都会查询数据库;如果有很多用户都创建过文章,那么就会导致大量的数据库查询操作,而不再是使用:include参数时的一次查询。另外,据我们所知,无论何时展示文章都要同时显示作者的用户名,因此现在使用:include参数是有意义的。

2. 返回XML数据

如果客户请求的是XML而非HTML,index方法会在Rails的REST Web服务的支持下自动返回XML数据。指定XML请求的方法有两种:一种是用客户端的HTTP Accept首部,另一种是在URL的末尾添加.xml。也就是说,http://localhost:3000/articles.xml表示返回一张XML描述的文章列表而不是呈现HTML布局。

返回XML数据这种做法简化了API的初始化过程。为代码中所有方法添加此API支持意味着网站做到了真正意义上的开放,并且它还可响应其他应用程序或网站。你可以编写易于与本站交互的桌面应用程序或Web应用程序,而其他的Rails网站则可在不进行额外编码的情况下,通过Rails的ActiveResource模块来访问我们的网站。

3. RSS和Atom Feed

请求到达时,除了提供XML输出,index方法还会响应RSS或Atom结果。不过,它们的XML描述结构在Rails中还没有定义,所以我们需要在.rxml文件中对其进行指定。RXML文件与RHTML文件的结构类似,都用于包装各种视图文件,区别只是定义了XML结构来替代HTML。

为了更简单地生成XML文档,Rails用到了名为Builder的Ruby库。Builder库提供了一种简便的方式来创建有效的XML文件,由于创建过程使用的是Ruby语言,因此你无需检查XML的有效性和格式的正确性。而且,同含XML标记和嵌入式Ruby代码的ERb文件相比,阅读RXML文件要容易得多。

构建RSS Feed需要创建RXML文件app/views/articles/rss.rxml,并在其中输入代码清单4-2所示的代码。

代码清单4-2 指定了文章RSS Feed的rss.rxml文件

 
【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
2008年上半年IT技术图书阅读排行大盘点
Sun以10亿美元并购开源数据库厂商MySQL
访谈:Windows平台,企业网站漏洞的攻击和防御
MySQL5.0新品推介
MySQL基础与配置
 
 验证码: (点击刷新验证码)   匿名发表
  • 互联网时代的软件革命—SaaS架构设计

  • 作者:叶伟等著
  • 本书是国内第一本完整介绍SaaS应用开发的书籍,聚集于架构设计。内容是互联网领域具有丰富实践经验的8位一线架构师,对于多年Sa..
Copyright©2005-2008 51CTO.COM 版权所有