여기에 설명 된대로, Devise로 Ajax 로그인을 시도하고 있습니다 : http://jessehowarth.com/2011/04/27/ajax-login-with-devise#comment-5 (jBeasley의 코멘트 참조).레일즈 3 AJAX : 틀린 상수 이름
NameError (wrong constant name ["{\"success\":false,\"errors\":[\"Login failed.\"]}"]Controller):
및 파이어 버그 [500 내부 서버 오류] 표시 :
내 컨트롤러이 오류가 발생
class Users::SessionsController < Devise::SessionsController
def failure
render :json => {:success => false, :errors => ["Login failed."]}
end
end
를 반환하려고 시도한다.
어떻게 해결할 수 있습니까? 나는 Rails 3.1을 실행 중이며 1.4.5를 고안한다.
감사합니다.
내가하고있는 일은 : 회피 => 실패. 나는 그것을 "users/sessions # failure"로 변경했고, 방화범은 { "success": false, "errors": [ "Login failed."]} 응답으로 얻습니다. 대단히 감사합니다!! – suruen
확장 설명해 주셔서 감사합니다. 원래 버전이 경로가 잘못 지정된 경우에도 def failure를 호출했기 때문에 나는 혼란 스러웠습니다. 그래서 내 질문은 '왜 내 버전에서는 오류가 발생하지만 올바른 경로는 제공되지 않을 것입니다. 둘 다 호출 방어 실패가 발생합니다.' 분할에 대한 귀하의 설명은 의미가 있습니다 - 나는 직접 소스 코드를 따르고 과정에서 몇 가지 레일을 배우려고 노력할 것입니다 ... 다시 한번 감사드립니다! – suruen
hah 나는 실제 JSON을 메서드에 적용하는 이유를 알아 내고 첫 번째 주석을 발견하는 것을보고있었습니다. 물론 실패 메서드가 호출되었습니다. 실제로 인라인이라고 부르기 때문입니다. 튜토리얼을 참고하면 나중에 호출 할 호출 메소드를 참조하여 심볼': failure '를 전달합니다. JSON을'warden [: recall]'로 저장하고 결국'recall_app'로 곧바로 전송합니다. 그 이상한 불변의 전화가 어떻게 발생했는지 알 수 있습니다. – numbers1311407