2017-09-11 10 views
0

레일 5의 경우, 메일러 파일에서 상수를 어떻게 인식합니까? 나는이 파일, 응용 프로그램/우편물/user_notifier.rb,메일러 파일에 상수를 등록하려면 어떻게해야합니까?

class UserNotifier < ActionMailer::Base 
    ... 

    # send notification email to user about the price 
    def send_confirmation_email(user_id) 
    @user = User.find(user_id) 
    mail(:to => @user.email, 
    :subject => Constants::EMAIL_CONFIRMATION_SUBJECT) 
    end 

end 

을 가지고 있지만 그것은 라인에 도달 할 때 "대상 => 상수 :: EMAIL_CONFIRMATION_SUBJECT)"는 오류

uninitialized constant Constants::EMAIL_CONFIRMATION_SUBJECT 
로 사망 내가 상수

module Constants 

    # Subject for email confirmations 
    EMAIL_CONFIRMATION_SUBJECT = "Please confirm your email." 

end 

가 어떻게이 문제를 해결합니까 내 설정/초기화/global.rb 파일에 정의 된 사실에도 불구하고

?

+0

초기화 프로그램 파일은 응용 프로그램이 시작될 때만 구문 분석됩니다. 스프링을 사용하고 있다면 (이것은 기본적으로 당신이하고 있다고 가정합니다) 스프링이 시작할 때 가지고 있던 global.rb 초기화 프로그램의 버전을 사용할 것입니다. 웹 서버를 다시 시작해야합니다 (레일을 다시 시작하거나 tmp/restart.txt를 터치하십시오). 그리고 sidekiq 또는 비슷한 것을 사용하는 경우 sidekiq를 다시 시작하십시오. – bcd

답변

0

상수에 모듈 이름을 접두사로 사용할 필요는 없습니다. 상수는 전역 범위에서 사용할 수 있습니다.

이메일 :

def send_confirmation_email(user_id) 
@user = User.find(user_id) 
mail(:to => @user.email, 
    :subject => EMAIL_CONFIRMATION_SUBJECT) 
end 

설정/초기화/global.rb

EMAIL_CONFIRMATION_SUBJECT = "Please confirm your email." 

나는 그것이 바로이 목적을 위해 만들어진 이후 당신이 레일에서 국제화를 사용하는 것이 좋습니다있어,하지만 http://guides.rubyonrails.org/i18n.html