【问题标题】:refactoring will_paginate attributes in a controller query在控制器查询中重构 will_paginate 属性
【发布时间】:2011-02-27 00:09:33
【问题描述】:

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

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

感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案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=> nil 一起使用,但是如果 params 不存在,您可能会收到 params[] 错误(即,您将执行nil[],试图将 nil 视为数组)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我的模型中已经有了第一个。但它对我发布的问题没有帮助。
      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多