collection_select does display the correct defaults when editing a
record. Double check your syntax, here is an example:
<%= form.collection_select :id, MyModel.find(:all), :id, :name %>
If the value of :id on the left matches one of :id options on the
right that will be the default value.
For the cases where you need to include a :selected parameter one easy
solution is to just use select instead of collection_select. It only
adds a couple of extra parameters and :selected option will work as
advertised. Another possibility would be to override the initialize
method in your model class to set the default value. Then when a new
object is passed into collection_select it will already have the
default and you don't even need to use :selected.