I'm sure there's a cleaner solution but what I ended up doing was to update a different set of strong parameters after a successful save. The problem prob has something to do with 1) one of my parameters, :feature_type_ids, is actually an array and/or 2) :feature_type_ids is in a different model (not the venues.rb). I thought that Rails would "automagically" handle saving to differnet models since venues.rb and features.rb have been set up through a :has_many :through relationship. I'd be curious for a better solution but the following works:
class VenuesController < ApplicationController
def create
...
if @venue.save(venue_only_params)
if @venue.update_attributes(venue_params)
flash[:success] = "Success!"
redirect_to venues_path
else
flash[:error] = "Problem!"
render 'new'
end
end
def venue_params
params.require(:venue).permit(:attribute_1, :attribute_2, :feature_type_ids => [])
end
def venue_only_params
params.require(:venue).permit(:attribute_1, :attribute_2)
end
end