I am starting to play with validations as I want to catch errors before
SQL rejects inserts to the table which are ugly when nulls are sent to
''Not Null'' columns, etc.
If I do something in my model like...
validates_format_of :first_name,
:with => /^\w+$/,
:message => "you moron, enter a name"
I still end up getting the trace window and not the output in the form
itself where I would expect it to display with a first line that reads:
<%= error_messages_for ''client'' %>
>From Agile book and from rails.rubyonrails.com, I can see that I can use
rescue_action_in_public(exception) but that seems to be for trapping
against not found pages.
How do I capture these errors and stay within my form and display my
'':message'' there?
Craig
Are you redirecting at the end of the action that would have the validation
error? That
tripped me up for a while.
I finally wound up putting the model object in the flash if there were errors.
In my
"add_comment" action, I have:
if @comment.save
flash[:notice] = ''Comment added.''
else
flash[:comment] = @comment
end
redirect_to :action => ''show'', :id => @proposal
And then I have to do this in the view:
<% @comment = @flash[:comment]
if(not @comment.nil?)
%>
<%= error_messages_for(:comment)%>
<% end %>
which seems annoying. I want to always redirect so that I never get the
form''s action url
let in the browser address bar.
Now, this may not actually be your problem and there could quite easily be a
cleaner
solution to this. But hopefully I''ll be right about the redirect and
that''ll at least get
you somewhere!
b
Craig White wrote:> I am starting to play with validations as I want to catch errors before
> SQL rejects inserts to the table which are ugly when nulls are sent to
> ''Not Null'' columns, etc.
>
> If I do something in my model like...
>
> validates_format_of :first_name,
> :with => /^\w+$/,
> :message => "you moron, enter a name"
>
> I still end up getting the trace window and not the output in the form
> itself where I would expect it to display with a first line that reads:
>
> <%= error_messages_for ''client'' %>
>
>>From Agile book and from rails.rubyonrails.com, I can see that I can use
> rescue_action_in_public(exception) but that seems to be for trapping
> against not found pages.
>
> How do I capture these errors and stay within my form and display my
> '':message'' there?
>
> Craig
>
> _______________________________________________
> Rails mailing list
> Rails@lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
I''ve been having exactly the same problem, this works for me. There must be a cleaner way of doing this, but I''m over my blocker now so thanks! Mat. Ben Munat wrote:> Are you redirecting at the end of the action that would have the > validation error? That > tripped me up for a while. > > I finally wound up putting the model object in the flash if there were > errors. In my > "add_comment" action, I have: > > if @comment.save > flash[:notice] = ''Comment added.'' > else > flash[:comment] = @comment > end > redirect_to :action => ''show'', :id => @proposal > > And then I have to do this in the view: > > <% @comment = @flash[:comment] > if(not @comment.nil?) > %> > <%= error_messages_for(:comment)%> > <% end %> > > which seems annoying. I want to always redirect so that I never get the > form''s action url > let in the browser address bar. > > Now, this may not actually be your problem and there could quite easily > be a cleaner > solution to this. But hopefully I''ll be right about the redirect and > that''ll at least get > you somewhere! > > b-- Posted via http://www.ruby-forum.com/.
Reasonably Related Threads
- rescue_action_in_public question
- Validation error_messages_for problem
- issue with rescue_action_in_public! and testing 404 responses
- Active Record, Migration, and Translation
- AWDWR: NameError (uninitialized constant UnknownAction) in rescue_action_in_public