I have two forms in one view updating the User Profile. One Form is to Update my name etc. and one is to change my password.
Profile Form:
- form_for @user, :url => account_path do |f|
= f.error_messages
...form fields here...
Password Form:
- form_for @user, :url => account_path do |pf|
= pf.error_messages
...password fields here...
As you can see they both point to the same update action in the users controller. If I type in a invalid password both error_messages show me the same error message.
How can I output separate error messages per form?
You need to use
error_message_onto output the error message for one specific attribute. Keep in mind, that its output is not very meaningful by itself, as it lacks the attribute name and the header message thaterror_messages/error_messages_forinclude by default. You can use :prepend_text and :append_text to customize the messages (look at the API docs for more info).Note that for the password part, all you have to do is call
error_message_on :password, but for the rest of the form fields, you have to callerror_message_ononce for every attribute, apart from :password. You could write your own helper to avoid that.