2009-08-15 44 views

回答

1

要設置一類廣泛的默認

class Post < ActiveRecord::Base 

    def self.per_page 
    25 
    end 

end 

或者通過查詢依據查詢中使用per_page在您的通話

class Post <ActiveRecord::Base 

    def self.posts_by_paginate 
    paginate(:all, :per_page => 25, :conditions => ["published = ?", true]) 
    end 

end 
1

這裏是我會做什麼

Class UsersController < ApplicationController 
    def index 
     @users = User.paginate(:all, :page => params[:page], :per_page => params[:number_of_records]) 
    end 
end 
+0

如果OP希望確保只10,20和50每個頁面選項都有效,您可以擴展此方法來執行該限制。類似於['10','20','50']。包括?(params [:page]) – 2009-08-16 01:41:06

17

看起來OP也在這裏問:http://railsforum.com/viewtopic.php?id=33793並得到更好的答案。

要適應那裏的最佳解決方案,這是我喜歡的:

(視圖)

<%= select_tag :per_page, options_for_select([10,20,50], params[:per_page].to_i), 
     :onchange => "if(this.value){window.location='?per_page='+this.value;}" %> 

(控制器)

@per_page = params[:per_page] || Post.per_page || 20 
@posts = Post.paginate(:per_page => @per_page, :page => params[:page]) 
+3

感謝您的示例 - 這正是我需要的Rails 3項目。儘管一個技巧......你可能想要將你的select_tag中「params [:per_page] .to_i」部分改爲「@per_page」,因爲我們已經知道控制器的@per_page。此更改可確保在您的選擇標記中選擇適當的值,即使沒有per_page參數(例如,索引操作)。 – 2011-06-23 15:33:53

+0

它適合我。 – 2012-11-05 07:01:49

相關問題