我需要测试我的控制器中的实例变量是否包含特定值。我想.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