我需要測試我的控制器中的實例變量是否包含特定值。我想.include?將是這樣做的方式,但似乎並不奏效。如何測試某個值是否在Ruby on Rails的實例變量中?
我的代碼看起來是這樣的:
@names=Model.find_by_sql("select name from ...")
if @names.include?(params[:name])
...
end
if語句不知何故八方通計算爲真。
由於
我需要測試我的控制器中的實例變量是否包含特定值。我想.include?將是這樣做的方式,但似乎並不奏效。如何測試某個值是否在Ruby on Rails的實例變量中?
我的代碼看起來是這樣的:
@names=Model.find_by_sql("select name from ...")
if @names.include?(params[:name])
...
end
if語句不知何故八方通計算爲真。
由於
首先,是的find_by_sql不要做的好方法。 find_by_sql將返回一個類Model的對象。而params [:name]很可能是一個字符串。下面應該工作:
Model.find(:all, :conditions => 'specify conditions here').map(&:name).include?(params[:name])
我改變了代碼:'@名稱= Model.find(:全部:條件=> '...')。圖(:名稱) 如果@names。包括?(params [:name])',但.include?總是評估爲假? – Max 2012-01-12 15:04:18
您應該使用調試器來檢查@names和params [:name]的值。我很確定,如果數組包含與params [:name]中相同的名稱,它將返回true。 – 2012-01-12 17:54:06