2011-09-05 83 views
1

嘗試輸出某些數據作爲對json請求的響應時出現奇怪的錯誤。對於我的生活,我無法弄清楚這裏的問題。我正在做一些非常類似在另一個控制器中,並沒有得到任何錯誤。任何想法會造成這種情況?Rails:未定義的方法`model_name'?

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

respond_with只接受** ActiveRecord,如**對象。你不能只給它一個對象數組或任何不像ActiveRecord實例的東西。是的,這是一個很大的痛苦,這就是爲什麼我在處理這些事情時推出了自己的respond_with_object解決方案。 –

+0

你能分享你的解決方案嗎? – istan

回答

1

我的解決方案適用於任何發現此問題的人。我結束了重寫

respond_with() 

爲respond_to代碼塊:

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

這解決了這個問題對我來說!

相關問題