2012-01-12 85 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

相关问题