Я отправляю, данные через добираются, и я должен поместить его в международный массив, который будет использоваться в находке. вот мой код:
@found = Array.new
params['candidate'].each do |c|
@found << c.to_i
end
Мой URL похож на это
http://localhost:3000/export/candidate?candidate[]=3&candidate[]=4&commit=Export
Если это имеет какое-либо значение, я использую его для этой находки
@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)
Скобки отсутствуют вокруг массива
Спасибо и доброе утро!
Alex
Просто заключите скобки в скобки?
@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`]])
Ваша первоначальная попытка не сработала, потому что вы не поставили скобки после IN
пункт.