我正在使用显示搜索结果的简单搜索:
@adds = Add.search(params[:search])
除了搜索结果之外,我正在尝试使用nearbys()方法,该方法显示接近搜索结果的对象。以下方法显示接近2的对象,但不显示对象2.如何将对象2与附近的对象一起显示?
@adds = Add.find(2).nearbys(10)
虽然上面的代码有效,但当我使用搜索时,@adds = Add.search(params[:search]).nearbys(10)
会返回no方法错误,undefined method
nearbys'for Array:0x30c3278`
如何在模型中搜索对象并使用nearbys()方法并显示返回的所有结果?
模型:
def self.search(search)
if search
find(:all, :conditions => ['address LIKE ?', "%#{search}%"])
# where('address LIKE ?', "%#{search}")
else
find(:all)
end
end
答案 0 :(得分:1)
当你找到(2)时,会返回一个模型对象,但如果找到(:all),则会返回数组。
nearbys方法仅适用于模型对象的实例。如果您的搜索方法返回10个地址的数组怎么办?你不能只是在阵列附近调用,你必须通过你的阵列循环并在附近应用于循环中产生的每个地址。
答案 1 :(得分:0)
如果没有看到您附近的方法,我可以说这是scoped
的完美用例:
def self.search(term)
if term
scoped({ :conditions => ["address LIKE ?", term] })
else
scoped({})
end
end
如果在类上定义nearby
,我会认为它会像这样使用:
Model.search("pizza").nearby
是您的范围。