Rails:未定义的方法`model_name'?

时间:2011-09-05 15:56:53

标签: ruby-on-rails ruby-on-rails-3 json

尝试输出某些数据作为对json请求的响应时出现奇怪错误。对于我的生活,我无法弄清楚这里的问题。我在另一个控制器中做了类似非常的事情,并没有得到任何错误。会有什么想法导致这种情况?

  class SessionsController
  ...
  user = User.authenticate(params[:session][:email].downcase,
                           params[:session][:password].downcase)
  if user.nil?
    respond_with(@error = "Invalid email/password combination.")
  else
    sign_in user
    respond_with([user, user.authenticated_with])
  end

  -------------------------------------

  User.rb
  ...
  def authenticated_with
    fb_hash = {:facebook => (!self.authentications.where("provider = ?", "facebook").empty? ? true : false)}
    tw_hash = {:twitter => (!self.authentications.where("provider = ?", "twitter").empty? ? true : false)}
    providers = [fb_hash, tw_hash]
    return providers
  end

  -------------------------------------

  LOG OUTPUT

  2011-09-05T15:25:51+00:00 app[web.1]: NoMethodError (undefined method `model_name' for Array:Class):
  2011-09-05T15:25:51+00:00 app[web.1]:   app/controllers/sessions_controller.rb:24:in `create'

日志错误引用了这一行:

  respond_with([user, user.authenticated_with])

任何想法???

谢谢!

1 个答案:

答案 0 :(得分:1)

我的解决方案适合任何发现此问题的人。我最后改写了

respond_with()

作为respond_to块:

respond_to do |format|
  format.json { render :json => [user, user.authenticated_with]}
end

这解决了我的问题!