Я создаю некоторые данные для отправки через $ .post jQuery, данные, которые я отправляю, выглядят так:
authenticity_token: LxHlgi1WU8o0DtaNuiQOit/e+HlGR2plVcToHUAhA6I=
crews[0][boat_id]: 2
crews[0][crew][]: 10
end_time: 1280408400
start_time: 1280404800
Которая из jQuery преобразует объект данных, который подготовлен:
- создание массива [] для каждого «экипажа», обнаруженного в DOM, называемого экипажами.
- Затем я перебираю экипажи в DOM, создаю объект и сохраняю его идентификатор лодки
- затем я создаю еще один массив для его списка членов экипажа, который затем добавляется в объект экипажа и помещается в массив «экипажи».(JS немного длинный, может публиковать при необходимости)
Тогда в моем контроллере у меня есть:
def create
@outing = Outing.create(
:club => current_user.club,
:title => 'Outing',
:start_time => Time.at(params[:start_time].to_i),
:end_time => Time.at(params[:end_time].to_i)
)
@outing.save
Rails.logger.debug(params[:crews].inspect)
params[:crews].each_with_index do |crew,i|
Rails.logger.debug(crew.inspect)
@crew = Crew.create(
:boat_id => crew[:boat_id].to_i,
:outing_id => @outing.id
)
@crew.save
crew[:crew].each do |c|
@cu = CrewUsers.create(
:crew_id => @crew.id,
:user_id => c.to_i
)
end
end
render :nothing => true
end
Два оператора проверки выводят что-то вроде этого:
{"0"=>{"crew"=>["10"], "boat_id"=>"2"}}
["0", {"crew"=>["10"], "boat_id"=>"2"}]
и я получаю эту ошибку:
TypeError (Symbol as array index):
Для меня экипажи не должны быть индексированным массивом, и в этом проблема.Но я тоже могу ошибаться.Есть идеи, что я делаю не так или как это исправить?