ruby rails将params转换为int数组

Ale*_*lex 5 ruby arrays ruby-on-rails

我通过get发送数据,我需要将它放入一个int数组,用于find.这是我的代码:

@found = Array.new
  params['candidate'].each do |c|
  @found << c.to_i
  end
Run Code Online (Sandbox Code Playgroud)

我的网址看起来像这样

http://localhost:3000/export/candidate?candidate[]=3&candidate[]=4&commit=Export
Run Code Online (Sandbox Code Playgroud)

如果它有任何区别我将它用于此查找

@candidate = Candidate.find(:all, :conditions => ["candidates.id IN ?", @found]) 
Run Code Online (Sandbox Code Playgroud)

但是目前它没有把它放在一个真正的数组中因为我得到了这个错误

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)
Run Code Online (Sandbox Code Playgroud)

数组周围缺少括号

谢谢,早上好!

亚历克斯

Gar*_*eth 16

把括号括在你的周围?

@candidate = Candidate.find(:all, :conditions => ["candidates.id IN (?)", @found]) 
Run Code Online (Sandbox Code Playgroud)

此外,您的第一个代码段可以折叠为:

@found = params['candidate'].map(&:to_i)
Run Code Online (Sandbox Code Playgroud)