2010-04-07 35 views
0

github url如何在搜索中顯示兩個不同的對象?

我使用的顯示搜索結果一個簡單的搜索:

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

除了搜索結果我想利用方法,鄰近的(),它顯示是接近對象靠近搜索結果。以下方法顯示接近2的對象,但不顯示對象2.如何將對象2與附近的對象一起顯示?

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

雖然上面的代碼的功能,當我使用搜索,@adds = Add.search(params[:search]).nearbys(10)一個不返回任何方法錯誤,undefined method鄰近的陣列:0x30c3278`

我怎樣才能查詢的模型爲對象,並使用nearbys()方法並顯示返回的所有結果?

型號

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

如果您能向我們展示'search'方法的定義,這將有所幫助。 – 2010-04-07 23:22:27

+0

把它拿起來了 – 2010-04-08 00:15:26

+0

並回答。我希望我釘牢它。 – 2010-04-08 03:02:38

回答

1

當你找到(2),則返回一個模型對象,但如果你發現(:所有),並返回數組。

nearbys方法僅適用於模型對象的實例。如果您的搜索方法返回一個包含10個地址的數組呢?你不能只在陣列上調用附近,你必須循環你的數組,並將附近的值應用到循環中產生的每個地址。

0

沒有看到你附近的方法,我可以只是說,這是一個完美的用例的scoped

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

如果nearby是在類中定義的一樣,我覺得它會像這樣被使用:

Model.search("pizza").nearby 

而且怎麼可以範圍。

相關問題