Railscast 73 doesn't work. Is this an edge problem or am I missing something?

Episode 73 of Ryan Bate’s great series of screencasts shows an example
of using fields_for to create a new record containing two models. I’m
trying to repeat his result but alway get and error from this line:

<% fields_for "ferry[scheduled_port_attributes][]", scheduled_port

do |sp_form| %>

In the rails cast, this returns an array of scheduled_port_attributes,
but instead I get a hash with “3” as a key:

{“commit”=>“Save”,
“ferry”=>{ “scheduled_port_attributes”=>{“3”=>{“departs(4i)”=>“21”,
“departs(5i)”=>“29”,
“arrives(1i)”=>“2007”,
“arrives(2i)”=>“10”,
“port_id”=>“2”,
“arrives(3i)”=>“12”,
“arrives(4i)”=>“21”,
“departs(1i)”=>“2007”,
“arrives(5i)”=>“29”,
“departs(2i)”=>“10”,
“departs(3i)”=>“12”}},
“id”=>“1”}}

Am I missing something? I’m on edge rails. Does that matter?