Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Undefined method 'on' for ActionModel

I'm getting the following error:

NoMethodError in Users#new

Showing .../app/views/users/form/_new.haml where line #7 raised:

undefined method `on' for #<ActiveModel::Errors:0x007fb599ec6610>

The code in line 7 is:

7:   = errors_for user, :first_name

And the application_helper.rb:

def errors_for(model, field)
  error = case errors = model.errors.on(field)
  ...
end

'on' is a default method in ActiveRecord. Why doesn't this work?

like image 407
Patrick Avatar asked Sep 23 '11 08:09

Patrick


2 Answers

If you're using Rails 3, then the problem is that there's no "on" method for the Errors class anymore. I think you're supposed to use "get" now. So:

error = case errors = model.errors.get(field)

Or...

error = case errors = model.errors[field]
like image 69
Chadwick Wood Avatar answered Oct 04 '22 03:10

Chadwick Wood


I checked my user and u.errors is an ActiveRecord::Errors, while I see you have an ActiveModel::Error, I would work on that.

Then I don't understand case errors = statement in your helper, I'm curious to know how you implemented that part...

like image 24
ecoologic Avatar answered Oct 04 '22 01:10

ecoologic