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

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


你可能感兴趣的:(Rails学习笔记(7)实现分页,及数据库模型命名限制)