min_age = params [:min_age]
max_age = params [:max_age]
@users = User.find(:all, :conditions => [“年> =?AND年< =?”,min_age,max_age])
这是搜索功能的控制器方法。如您所见,我希望按年龄范围搜索。这适用于最大99的所有max_age值,但是当max_age超过99时,搜索不会返回结果。我真的不期待99以上的人,但我很好奇为什么会这样。年龄是一个字符串。
答案 0 :(得分:3)
这是因为当你将字母数字作为字符串进行比较时,“100”会出现在“20”之前。将age
更改为应该是的整数,它将正常工作。
答案 1 :(得分:2)
Mark Byers有正确的答案。所以它应该被接受。
但是你应该知道,这是你应该使用named scope的那种东西。
在user.rb
中named_scope :ages_in_range, lambda {|min, max|
{:conditions => ["years >= ? AND years <= ?", min, max]}
}
现在在您的控制器中:
@users = User.ages_in_range(min_age,max_age)