Ruby on rails ruby rails将参数转换为int数组

Ruby on rails ruby rails将参数转换为int数组,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我通过get发送数据,我需要将其放入一个int数组中以用于查找。 这是我的密码: @found = Array.new params['candidate'].each do |c| @found << c.to_i end 如果有什么区别的话,我会用它来做这个发现 @candidate = Candidate.find(:all, :conditions => ["candidates.id IN ?", @found]) 但目前它并没有把它放到一个真正的数

我通过get发送数据,我需要将其放入一个int数组中以用于查找。 这是我的密码:

@found = Array.new
  params['candidate'].each do |c|
  @found << c.to_i
  end
如果有什么区别的话,我会用它来做这个发现

@candidate = Candidate.find(:all, :conditions => ["candidates.id IN ?", @found]) 
但目前它并没有把它放到一个真正的数组中,因为我得到了这个错误

Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '4)' at line 1: SELECT * FROM `candidates` WHERE (candidates.id IN 4,2)
阵列周围缺少括号

谢谢,早上好


亚历克斯

把括号括起来就行了吗

@candidate = Candidate.find(:all, :conditions => ["candidates.id IN (?)", @found]) 
此外,您的第一个代码段可以折叠为:

@found = params['candidate'].map(&:to_i)

您正在进行的整个转换是不必要的。您可以将字符串数组作为输入传递给查询(只要字符串值表示数字)

您只需一行即可获得所需:

Candidate.find_all_by_id(params[`candidate`])
这与:

Candidate.find(:all, :conditions => {:id => params[`candidate`]})
Candidate.find(:all, :conditions => ["id IN (?)",params[`candidate`]])
这与:

Candidate.find(:all, :conditions => {:id => params[`candidate`]})
Candidate.find(:all, :conditions => ["id IN (?)",params[`candidate`]])

您最初的尝试没有成功,因为您没有在子句中的
后面加括号。

谢谢您的帮助!这意味着什么&:?这是一种传递块的简单方法,它只调用传递到块中的参数的给定方法。似乎有一个很好的解释。地图很有用