【发布时间】:2011-02-27 00:09:33
【问题描述】:
嘿。我在控制器索引查询中一遍又一遍地使用以下行。创建一个新的应用程序方法来重用它是否有意义?关于如何提取它并可能将:per_page 属性传递给可变参数的任何建议?
paginate :page => params[:page], :per_page => 12
感谢您的宝贵时间!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 refactoring helper
嘿。我在控制器索引查询中一遍又一遍地使用以下行。创建一个新的应用程序方法来重用它是否有意义?关于如何提取它并可能将:per_page 属性传递给可变参数的任何建议?
paginate :page => params[:page], :per_page => 12
感谢您的宝贵时间!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 refactoring helper
您绝对可以在您的应用程序控制器中执行此操作。我认为,由于它是单行的,因此您在击键和文本方面节省的费用很少。不过,如果你想这样做,你可以把这样的东西放在 application_controller.rb 文件中
# optional-- this lets you use the method in views as well
helper_method :paginate_helper
...
# optional, but safer
protected
def paginate_helper(obj_to_paginate, page_limit)
obj_to_paginate.paginate :page => params[:page], :per_page => page_limit
end
根据您将使用此帮助程序的范围,您可能需要添加有关 params[:page] 的 if 语句。 paginate 将与 :page=> nil 一起使用,但是如果 params 不存在,您可能会收到 params[] 错误(即,您将执行nil[],试图将 nil 视为数组)。
【讨论】:
就像它在will_paginate README...中所说的那样......
你可以这样定义:
class Post < ActiveRecord::Base
cattr_reader :per_page
@@per_page = 50
end
...或者像这样:
class Post < ActiveRecord::Base
def self.per_page
50
end
end
【讨论】: