我正在嘗試使用Devise做Ajax登錄,如此處所述:http://jessehowarth.com/2011/04/27/ajax-login-with-devise#comment-5(請參閱jBeasley的註釋)。Rails 3 AJAX:錯誤的常量名稱
我的控制器試圖返回
class Users::SessionsController < Devise::SessionsController
def failure
render :json => {:success => false, :errors => ["Login failed."]}
end
end
這導致這樣的錯誤:
NameError (wrong constant name ["{\"success\":false,\"errors\":[\"Login failed.\"]}"]Controller):
和螢火蟲表示[500內部服務器錯誤。
我該如何解決這個問題?我正在運行Rails 3.1並設計1.4.5。
謝謝!
我在做:召回=>失敗。我將它改爲「users/sessions#failure」,現在Firebug獲得{「success」:false,「errors」:[「Login failed。」]}作爲迴應。太好了,非常感謝! – suruen
謝謝你的擴展解釋。我仍然感到困惑,因爲我知道我的原始版本*即使在路由錯誤指定的情況下也會調用def failure。所以我的問題是'爲什麼我的版本會導致錯誤,而正確的路由不會,因爲無論如何都會調用def def failure?'。你對拆分的解釋是有道理的 - 我會嘗試自己關注源代碼,並希望在過程中學習一些軌道......再次感謝! – suruen
呵呵我只是想看看這個試圖解釋爲什麼實際的JSON將它變成方法,並且注意到你的第一條評論。確定失敗方法被調用,因爲你實際上稱它爲內聯。如果您注意到教程,他會傳遞符號':failure',指的是稍後調用的召回方法。你的內聯調用失敗,將JSON存儲爲'warden [:recall]'並最終直接發送給'recall_app'。所以你可以看到奇怪的常量化調用是如何發生的。 – numbers1311407