我正在尝试从数据库中获取分页记录列表,条件在 url 中给出。
例如:如果 url 是这样的:?name=Michael&age=20
它应该显示所有 20 岁的 Michaels 等。
但是如果 url 是 like &age=20
,它应该显示所有 20 岁的人并忽略“name”参数。
我在 1 页上对 2 个列表进行分页,它们都来自同一型号,仅因位置而异,所以我在控制器中定义了 2 个分页:
@boss = Person.paginate(:page => params[:boss_page], :conditions => "position = 1")
@manager = Person.paginate(:page => params[:manager_page], :conditons => "position = 2")
现在如何仅在参数存在的情况下从 URL 添加条件?
我正在尝试这种方式:
conditions = []
conditions << [ "age = ?", params[:age] ] if params[:age].present?
但是当我在 URL 中传递参数时它给了我错误:
undefined method `%' for ["age = ? ", "1"]:Array
下一个问题是如何将此数组中的条件与条件“position = 1”合并?
更新:我了解如何使用条件进行分页,但我只是不明白根据 GET 参数指定条件的最佳方法。我总是可以这样做:
if params[:age].present?
@boss = version with age conditons
else if params[:age].present? and params[:name].present?
@boss = version with age and name
else if params[:name].preset?
@boss = version with name only
但我相信在 Rails 中它可以做得更简单。