Trouble maintaining session data through render :action

flash[:notice] is an entirely different beast than
error_messages_for. error_messages_for are used by models. They are
the things that get created when your validations fail. flash[] on
the other hand, is something that you can use in your controllers to
provide messages back to your users in the view. Many people
actually use :info, :warning, :error in flash[] and have them styled
differently in CSS. To see if your flash message is working
correctly, do something like

<% if flash[:notice] && flash[:notice].strip != '' %>
<div style="color: red">
<%= flash[:notice] %>
<% end %>


That was your actual misunderstanding: render :action => 'foo' doesn't run the foo action. It just takes the template associated with the foo action and renders it.