ActionModel的未定义方法'on'

时间:2011-09-23 08:54:08

标签: ruby-on-rails-3 activerecord ruby-1.9

我收到以下错误:

NoMethodError in Users#new

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

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

第7行的代码是:

7:   = errors_for user, :first_name

和application_helper.rb:

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

'on'是default method in ActiveRecord。为什么这不起作用?

2 个答案:

答案 0 :(得分:14)

如果您正在使用Rails 3,那么问题是Errors类不再有“on”方法了。我想你现在应该用“得到”。所以:

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

或者...

error = case errors = model.errors[field]

答案 1 :(得分:1)

我检查了我的用户,u.errorsActiveRecord::Errors,而我看到你有ActiveModel::Error,我会继续努力。

然后我不理解帮助者中的case errors =陈述,我很想知道你是如何实现这一部分的......