What is the best way to push error messages on redirect to?
I've previously used couple of approaches, but both of them has issue.
(1) Passing the entire object with error on flash and using error_messages_for:
flash[:error_item] = @item
flash[:error] = @item.full_messages
Firstly, you can achieve what you're trying to do by setting a single sentence.
flash[:error] = @item.errors.full_messages.to_sentence
I think you could also set it as the array without overflowing the cookie.
flash[:error] = @item.errors.full_messages
But as the other guys say, flash is generally better off being used to return specific messages.
flash[:error] = "We were unable to destroy the Item"
A common pattern is as such.
def some_action if @record.action flash[:notice] = "Action performed successfully" redirect_to @record else flash[:error] = "Action failed" render :action => "some_action" end end
Namely, we have two paths.
@record.errorson hand to call
error_messages_for(@record)if we so wish.