Ruby on rails 在初始化方法之后将变量传递到模型中
我有下面的(高度简化的)模型,它将使用Ruby on rails 在初始化方法之后将变量传递到模型中,ruby-on-rails,ruby,search,model,will-paginate,Ruby On Rails,Ruby,Search,Model,Will Paginate,我有下面的(高度简化的)模型,它将使用 class Search < ActiveRecord::Base attr_reader :articles def after_initialize @articles = Article.paginate_by_name name, :page => 1 end end 这一切都很好,但请注意,我将页码硬编码为1,问题是将params[:page]值传递到after_initialize方法中,有人能推荐一种优
class Search < ActiveRecord::Base
attr_reader :articles
def after_initialize
@articles = Article.paginate_by_name name, :page => 1
end
end
这一切都很好,但请注意,我将页码硬编码为1,问题是将params[:page]值传递到after_initialize方法中,有人能推荐一种优雅的方法来实现这一点吗
谢谢在initialize方法中添加页面参数(或者更好地添加选项散列参数):
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])
如果您愿意,您甚至可以为选项哈希提供默认值。As
Search
extendsActiveRecord::Base
请记住包括对super(Search)
的调用,并使Search
也成为可选参数,即def initialize(Search={},options={})
以保留现有的行为。感谢您的帮助,现在一切正常。小问题,请确保在分配选项后调用super,因为super将在初始化回调后触发。
@search = Search.new(params[:search], :page => params[:page])