The previous code wasn't passing in the id, it was passing in the topic object itself, e.g:

```
Processing by AnnouncementsController#index as JSON
  Parameters: {"to_date"=>"2012-01-01", "topics"=>[#<Topic id: 374, name: "topic-1", created_at: "2011-11-11 11:11:11", updated_at: "2011-11-11 11:11:11", description: "Topic description", slug: "topic-1", state: "current", type: "Topic", carrierwave_image: nil, logo_alt_text: nil, start_date: nil, end_date: nil>], "departments"=>[#<Organisation id: 414, created_at: "2011-11-11 11:11:11", updated_at: "2011-11-11 11:11:11", slug: "organisation-1", url: nil, alternative_format_contact_email: nil, govuk_status: "live", organisation_logo_type_id: 2, analytics_identifier: "T1", handles_fatalities: false, important_board_members: 1, default_news_organisation_image_data_id: nil, closed_at: nil, organisation_brand_colour_id: nil, ocpa_regulated: nil, public_meetings: nil, public_minutes: nil, register_of_interests: nil, regulatory_function: nil, logo: nil, organisation_type_key: :other, foi_exempt: false, organisation_chart_url: nil>]}
```

The magic where `to_param` is called on parameter hashes doesn't work if the thing is an array.