dan*_*ave 3 ruby search model ruby-on-rails will-paginate
我有以下(大大简化)模型,使用will_paginate
class Search < ActiveRecord::Base
attr_reader :articles
def after_initialize
@articles = Article.paginate_by_name name, :page => 1
end
end
Run Code Online (Sandbox Code Playgroud)
我的show动作中的控制器代码是
@search = Search.new(params[:search])
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但是请注意我将页码硬编码为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
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中:
@search = Search.new(params[:search], :page => params[:page])
Run Code Online (Sandbox Code Playgroud)
如果愿意,您甚至可以为选项哈希提供默认值.
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |