2012-01-12 84 views
0

我需要測試我的控制器中的實例變量是否包含特定值。我想.include?將是這樣做的方式,但似乎並不奏效。如何測試某個值是否在Ruby on Rails的實例變量中?

我的代碼看起來是這樣的:

@names=Model.find_by_sql("select name from ...") 

if @names.include?(params[:name]) 
    ... 
end 

if語句不知何故八方通計算爲真。

由於

回答

0

find_by_sql結果將是(from the docs):

與列的陣列請求的封裝爲調用此方法的模型的屬性。

你需要在結果中搜索。

5

首先,是的find_by_sql不要做的好方法。 find_by_sql將返回一個類Model的對象。而params [:name]很可能是一個字符串。下面應該工作:

Model.find(:all, :conditions => 'specify conditions here').map(&:name).include?(params[:name]) 
+0

我改變了代碼:'@名稱= Model.find(:全部:條件=> '...')。圖(:名稱) 如果@names。包括?(params [:name])',但.include?總是評估爲假? – Max 2012-01-12 15:04:18

+0

您應該使用調試器來檢查@names和params [:name]的值。我很確定,如果數組包含與params [:name]中相同的名稱,它將返回true。 – 2012-01-12 17:54:06

相關問題