2014-06-12 2 views
0

이메일이 중복 된 경우 자바 스크립트를 통해 자신 만의 맞춤 팝업이 있어야하는 문제가 있습니다. 나는 이것을하기 위해 @emailexists를 사용한다. 그러나 elseif에있는 문제는 그것이 실제로 중복이고 다른 것보다 elsif를 사용하는 이유를 지정하는 방법을 알지 못한다. 어떤 도움이라도 대단히 감사하겠습니다!이메일이 중복 된 경우 elsif를 선택하는 방법

def create 
    @ambassador = Ambassador.new(ambassador_params) 
    if @ambassador.save 
    puts "========================" 
    puts "Successful Save" 
    puts "========================" 
    # redirect_to root_url, notice: 'Thank you for signing up!' 
    elsif @ambassador.errors 
    @emailexists = @ambassador.errors.full_messages 
    else 
    @errors = @ambassador.errors.full_messages 
    end 
end 
+1

, BTW 난 강력 풋의 로거 대신 레일을 사용하는 것이 좋습니다 것입니다. 로거 메시지는 모두 동기화되어 서로 나란히 표시되므로 메시지는 전송 된 순서와 위치에 나타납니다. 퍼츠는 즉시 콘솔에 쓰지만, 나머지 로그 메시지 (예 : 활성 레코드 메시지)와의 연결이 끊어 질 가능성이 높습니다. –

답변

1

이 명시 적으로 동일한 이메일을 사용하기보다는 오류를 허용하고 오류에서 특정 오류 시나리오를 감지하려고 기존 계정을 확인하려면 여기를 아마 더 간단합니다. 당신은 또한 대사 모델이 이메일 주소 이전 이후의 존재 검사를 단순화하기 위해, 저장 downcases 있는지 확인하는 것이 좋습니다

def create 
    @ambassador = Ambassador.find_by_email(ambassador_params[:email].downcase) 
    if @ambassador 
    @emailexists = true 
    else 
    @ambassador = Ambassador.new(ambassador_params) 
    if @ambassador.save 
     puts "========================" 
     puts "Successful Save" 
     puts "========================" 
     # redirect_to root_url, notice: 'Thank you for signing up!' 
    else 
     @errors = @ambassador.errors.full_messages 
    end 
    end 
end 

참고.

class Ambassador < ActiveRecord::Base 
    attr_accessible :email 

    # Not all database adapters use case-sensitive indices, 
    # so this helps ensure uniqueness no matter what. 
    before_save { email.downcase! } 
end 
+0

고마워요! 당신은 최고입니다 – espnicholas

+1

폴의 조언에 따라, 당신은 확실히'logger.info '를 사용하는 것에 익숙해 져야합니다.''puts'' 대신''Save Successful Save''- 출력은'log/environment_name.log'에 나타날 것입니다. 문서 도구 : http://guides.rubyonrails.org/debugging_rails_applications.html – DreadPirateShawn

관련 문제