子在川上曰

            逝者如斯夫不舍晝夜
          隨筆 - 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 陳剛 閱讀(1492) 評論(0)  編輯  收藏 所屬分類: Rails&Ruby

          主站蜘蛛池模板: 望奎县| 滨海县| 河北区| 安吉县| 安庆市| 搜索| 崇礼县| 新余市| 千阳县| 历史| 宁国市| 遂溪县| 通江县| 红桥区| 喀喇沁旗| 随州市| 齐河县| 施秉县| 水富县| 金溪县| 河北区| 东兴市| 沙坪坝区| 新泰市| 辽宁省| 瓮安县| 邵武市| 隆化县| 青神县| 宿迁市| 阜新| 安仁县| 榆社县| 新龙县| 磴口县| 龙江县| 五华县| 香格里拉县| 惠来县| 临颍县| 隆安县|