Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重构将对控制器查询中的属性进行分页_Ruby On Rails_Ruby On Rails 3_Refactoring_Helper - Fatal编程技术网

Ruby on rails 重构将对控制器查询中的属性进行分页

Ruby on rails 重构将对控制器查询中的属性进行分页,ruby-on-rails,ruby-on-rails-3,refactoring,helper,Ruby On Rails,Ruby On Rails 3,Refactoring,Helper,嘿。在我的控制器索引查询中,我反复使用下面这一行。创建一个新的应用程序方法来重用它有意义吗?有没有关于如何提取该属性并可能将:per_page属性传递给变量参数的建议 paginate :page => params[:page], :per_page => 12 谢谢你的时间 就像在 您可以这样定义它: class Post < ActiveRecord::Base cattr_reader :per_page @@per_page = 50 end class

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

paginate :page => params[:page], :per_page => 12
谢谢你的时间

就像在

您可以这样定义它:

class Post < ActiveRecord::Base
  cattr_reader :per_page
  @@per_page = 50
end
class Post < ActiveRecord::Base
  def self.per_page
    50
  end
end
class Post
。。。或者像这样:

class Post < ActiveRecord::Base
  cattr_reader :per_page
  @@per_page = 50
end
class Post < ActiveRecord::Base
  def self.per_page
    50
  end
end
class Post
您完全可以在应用程序控制器中执行此操作。我认为,由于它是一行程序,您在击键和文本方面节省的很少。不过,如果您想这样做,可以在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视为数组)。

我的模型中已经有了第一个。但这对我发布的问题没有帮助。