子在川上曰

  逝者如斯夫不舍昼夜
随笔 - 71, 文章 - 0, 评论 - 915, 引用 - 0
数据加载中……

Rails学习笔记(7)实现分页,及数据库模型命名限制

Rails的分页实在是简单到了极点。一个文章列表的分页是这样实现的。

先在Action使用paginate方法,如下。
其中得到的数据记录会在@articles变量里,页的信息在@article_pages变量里。
paginate方法的第一参数是数据表名,order_by根据id排倒序,conditions是查询条件,per_page是每页三条记录。
    @article_pages,@articles = paginate(:articles, 
                                        :order_by 
=> 'id DESC'
                                        :conditions 
=> "user_id=" + user_id, 
                                        :per_page 
=> 3)

接着在页面里就可以把@articles变量里的记录显示出来,而在*.rhtml文件里显示分页的那一栏的代码为
<%= pagination_links(@article_pages)%>

缺点是分页栏的式样固定,只列出了页码,没有列出上一页、下一页这样的翻页的按钮。不过,研究一下pagination_links方法的源代码,自己仿造写一个应该很简单。


---------------------------------

今天还碰到一个问题,我把表titles改名为modules后,模型文件名为module.rb,其他部份也做了修改。运行后出了错,出错信息是Module.class没有find方法(我在action调用find方法)。如下:
 NoMethodError in SiteController#index

undefined method `find
' for Module:Class

RAILS_ROOT: .
/script/../config/..
Application Trace 
| Framework Trace | Full Trace

#{RAILS_ROOT}
/app/controllers/site_controller.rb:21:in `header'
#{RAILS_ROOT}/app/controllers/site_controller.rb:5:in `index'
-e:4:in `load'
-e:4


多方尝试后发现数据库模型类不允许起名为module(这应该是rails内部的一个类,或者是rails是一个关键字),最后的解决办法是加一个下划线后缀,然后用set_table_name指定映射的表名。文件名:module_.rb
class Module_ < ActiveRecord::Base
  set_table_name 
"modules"
end


posted on 2007-05-08 22:09 陈刚 阅读(1479) 评论(0)  编辑  收藏 所属分类: Rails&Ruby


只有注册用户登录后才能发表评论。


网站导航: