0

github 网址

我正在使用显示搜索结果的简单搜索:

@adds = Add.search(params[:search])

除了搜索结果之外,我还尝试使用方法 nears(),它显示靠近搜索结果的对象。以下方法显示接近2的物体,但不显示物体2。如何将物体2与附近的物体一起显示?

@adds = Add.find(2).nearbys(10)

虽然上面的代码起作用,但当我使用搜索时, @adds = Add.search(params[:search]).nearbys(10)返回一个无方法错误,undefined method附近的'for Array:0x30c3278`

如何在模型中搜索对象并使用 nears() 方法并显示返回的所有结果?

型号

def self.search(search)
    if search
      find(:all, :conditions => ['address LIKE ?', "%#{search}%"])
      # where('address LIKE ?', "%#{search}")
    else
      find(:all)
    end
  end
4

2 回答 2

1

当你找到(2)时,返回一个模型对象,但如果你找到(:所有),则返回数组。

nears 方法仅适用于模型对象的实例。如果您的搜索方法返回一个包含 10 个地址的数组怎么办?您不能只在数组上调用附近,您必须遍历您的数组并将附近应用于循环中产生的每个地址。

于 2010-04-08T01:19:04.977 回答
0

在没有看到您附近的方法的情况下,我只能说这是 a 的完美用例scoped

def self.search(term)
  if term
    scoped({ :conditions => ["address LIKE ?", term] })
  else
    scoped({})
  end
end

如果nearby在类上定义,我认为它会像这样使用:

Model.search("pizza").nearby

就是您可以确定范围的方式。

于 2010-04-08T03:02:28.070 回答