我有以下(严重简化)模型,它使用will_paginate
class Search < ActiveRecord::Base
attr_reader :articles
def after_initialize
@articles = Article.paginate_by_name name, :page => 1
end
end
我的show动作中的控制器代码是
@search = Search.new(params[:search])
这一切都运行正常,但请注意我将页码硬编码为1,问题是将params [:page]值传递给after_initialize方法,有人可以建议一个优雅的方法吗?
由于
答案 0 :(得分:6)
在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])
如果愿意,您甚至可以为选项哈希提供默认值。