habtm - controlling with checkboxes UI

I need to put an array of checkboxes on a user profile editing form to allow users to self-select which neighborhoods they are interested in from the available neighborhoods. But I can't figure out the syntax to put in the view to make the neighborhood.id's translate into actual Neighborhood objects that makes AR happy.

The error I am getting from the below code is "Neighborhood expected, got String". The Neighborhood id's are coming in just fine, but the update_attributes() method just sees them as strings with no meaning. Which would be fine if it would just put them in the DB and not get all huffy...

# The list of checkboxes looks like this: <% for hood in @hoods %>    <div class="search-hoods">      <input type="checkbox" name="user[sale_alerts]" value="<%= hood.id %>" id="neighborhood_id-<%= hood.id %>" />      <%=h hood.name %>     </div> <% end %>

# here is the AccountController:

Hi, the problem isn't with strings<->int, it's with row IDs -> actual AR objects.

I ended up adding methods to the User model as such:

  def sale_alerts_hood_ids=(a)     self.sale_alerts = a.collect! { |id| Neighborhood.find(id) }   end

  def sale_alerts_hood_ids     return self.sale_alerts.collect { |sa| sa.neighborhood_id.to_i }   end

and if in the view I put

  <% for hood in @hoods %>     <input type="checkbox" name="user[sale_alerts_hood_ids]" value="<%= hood.id %>" <%= (@user.sale_alerts_hood_ids.include? (hood.id))? 'checked="true"' : '' %> />   <% end %>

then it seems to work. But this does a lot of find() calls potentially, and seems like kind of a PITA. Having a HABTM with this kind of UI is pretty common, I wonder if there is a more elegant solution?

Or maybe, this is sorta elegant. Maybe there is some way to DRY it up though in case I need to use this UI with a different combo of objects. But that's outside my Rails comfort zone for now.