It seems that when a HABTM (or has many) is involved, having a confirmation page prior to saving doesn't work as seamlessly as other Rails view/model parings, specifically when confirming an edit. This is caused by the immediate inserts or deletes that take place upon assigning to collection_ids. Changes are saved regardless of whether the user wants to cancel or proceed.
select_tag 'product[provider_ids][]', collection_options_with_selected #pseudo def preview @product = Product.find params[:id] @product.attributes = params[:product] #provider_ids saved here if @product.valid? render 'confirm; else render 'edit' end end build is not appropriate and push has the same functionality as assigning to provider_ids. So I have to do this: def preview @product = Product.find params[:id] @product.attributes = params[:product] #no product @selected_providers = Provider.find_by_ids params[:provider_ids] #to display provider names in confirm page #... end def update @product = Product.find params[:id] @product.attributes = params[:product] @provider_ids = params[:provider_ids] if @product.valid? Product.transaction do @product.provider_ids = @provider_ids @product.save end else ... end There's no way to do this in the typical Rails attribute assignment fashion? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.