Rails skips model validation

for the life of me, i cannot get validates_presence_of to return any
errors, leaving the form blank and clicking submit fails on the create
or save method, but no validation errors are rendered.

http://pastie.caboo.se/98101

i should note that update_attributes is working

On 9/17/07, terry [email protected] wrote:

for the life of me, i cannot get validates_presence_of to return any
errors, leaving the form blank and clicking submit fails on the create
or save method, but no validation errors are rendered.

Parked at Loopia

You’re getting confused as to how errors are reported.

When you write

<%= error_messages_for :job %>

It looks for a model object in the instance variable @job (like how
form_for works). The error messages are stored in the model object by
a call to valid? (or save, create, etc.).

But you don’t have an @job variable, so error_messages_for doesn’t
find anything.

Your controller code is wrong. First, create() will return a Job model
object, even if it couldn’t be saved. So the “if” part is always true.

Second, you are doing a redirect after the create. But if you had an
error, your error messages would be lost due to the redirect.

This should work:

@job = current_user.jobs.build(params[:job])
if @job.save
flash[:notice] = “job has been posted”
redirect_to :action => ‘index’
return
end
render :action => ‘new’

Note the render instead of redirect at the end. If the save fails, you
need @job to be passed to the view, because it contains the error
messages.

HTH

wow, awesome. thank you bob