Rails查找某些参数何时为空白

我有一个包含两个字段的搜索表单:x,y

执行搜索时,它将查找符合所有条件的记录。 但是,将两个条件中的任何一个都设置为“全部”,将其留空。

如果设置为all,我应该将params [:x]和params [:y]设置为什么。

params[:x] = ? unless params[:x] params[:y] = ? unless params[:y] users = User.where(["x = ? AND y = ?", params[:x], params[:y]]) 

我建议使用哈希建立你的条件:

 conditions = {} conditions[:x] = params[:x] unless params[:x].blank? conditions[:y] = params[:y] unless params[:y].blank? users = User.find(:all, :conditions => conditions) 

您需要链接您的条件,而不是尝试构建一个特定的范围。 您可以使用滑动范围技术:

 scope = User if (params[:x].present?) scope = scope.where(:x => params[:x]) end if (params[:y].present?) scope = scope.where(:y => params[:y]) end users = scope.all 

这样,您可以根据可能存在的参数有条件地使用限制。