3

我有以下(高度简化的)模型,它使用 will_paginate

class Search < ActiveRecord::Base

  attr_reader :articles

  def after_initialize
    @articles = Article.paginate_by_name name, :page => 1
  end

end

我的表演动作中的控制器代码是

@search = Search.new(params[:search])

这一切都很好,但请注意我将页码硬编码为 1,问题是将 params[:page] 值传递给 after_initialize 方法,有人可以提出一个优雅的方法吗?

谢谢

4

1 回答 1

7

在初始化方法中添加一个页面参数(或者更好的是选项哈希参数):

class Search
  def initialize(search, options = {})
    @options = options
  end

  def after_initialize
    @articles = Article.paginate_by_name name, :page => @options[:page]
  end
end

然后在你的控制器中:

@search = Search.new(params[:search], :page => params[:page])

如果您愿意,您甚至可以为选项哈希提供默认值。

于 2010-07-15T12:46:11.203 回答