I don't get why would you need to do
localized_content.update_attributes(params[:localized_content])
You are already accepting nested attributes for localized_content in content. I have a similar setup and didn't face any such problems. My forms have structure like:
form_for @content do |f|
f.fields_for :localized_contents do |ff|
ff.text_field :blah
# blah blah blah
end
end
in my controller i simply do:
@content = Content.find(params[:id])
@content.update_attributes(params[:content])
It correctly saves the localized contents and updates timestamps too. However, I am not using versioning, so can't comment on that.
However, if your form structure differs, you can try this:
@content = Content.where("localized_contents._id" => params[:localized_content][:id]).first
@content.update_attributes(params[:content])
Hope it helps.