重构will_paginate控制器查询中的属性

时间:2011-02-27 00:09:34

标签: ruby-on-rails ruby-on-rails-3 refactoring helper

嘿。我在我的控制器索引查询中反复使用以下行。创建一个新的应用程序方法来重用它是否有意义?关于如何提取这个并且可能将:per_page属性传递给变量参数的任何建议?

paginate :page => params[:page], :per_page => 12

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

就像它在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

答案 1 :(得分:1)

您绝对可以在应用程序控制器中执行此操作。我认为既然它是单行的,你在按键和文字方面节省的很少。不过,如果你想这样做,你可以在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 =&gt;没有,但如果params不存在(例如你正在做nil[],尝试将nil视为数组),你可能会得到params []的错误。