2016-12-13 7 views
0

とLoadError私は上記のエラーを取得するフォームを送信すると誰かが次のRuby on Railsエラーについて説明できますか? CandidatesController#で

Unable to autoload constant Usermailer , expected Z:/railsassignment/student/app/mailers/usermailer.rb to define it

を作成します。フォームはレコードを処理し、候補者はデータベースに追加されますが、新しく登録した候補者に送信しようとしているウェルカム電子メールは送信されません。

候補コントローラ

def create 
    @candidate = Candidate.new(candidate_params) 

respond_to do |format| 
    if @candidate.save 
    Usermailer.welcome(@candidate).deliver_now ***<-- Error highlights this line*** 
    format.html { redirect_to @candidate, notice: 'User was successfully  
    created.' } 
    format.json { render :show, status: :created, location: @candidate } 
    else 
    format.html { render :new } 
    format.json { render json: @candidate.errors, status: 
:unprocessable_entity } 
    end 
end 
end 

usermailer.rb

Z:/railsassignment/student/app/mailers/usermailer.rb(usermailerディレクトリ)

class UserMailer < ActionMailer::Base 
default from: "[email protected]" 

def welcome(candidate) 
@candidate = candidate 
mail(:to => candidate.can_email, :subject => "Welcome to EmployeMe.com, You  
have registered successfully!") 
end 
end 

が万一それ以上のファイルを見る必要があります。私はコメントを削除して、すぐにそれらを追加します質問。

+3

'Usermailer'!=' UserMailer' – Stefan

答えて

3

これは、命名規則が乱れているようです。 Rails命名規則、snake_caseクラス名CamelCaseにする必要がありますファイル名あたりとして

。シナリオでは、ファイル名はuser_mailer.rbである必要があります。

だから、どちらかUsermailerusermailer.rb user_mailer.rbまたは クラス名UserMailerの名前を変更します。

+1

'Usermailer'と' usermailer.rb'、 'UserMailer'と' user_mailer.rb'です。 – Stefan

+0

@Stefan:ありがとうございました。 –

+0

usermailer.rbをuser_mailer.rbに変更すると、次のエラーが発生します。NameError in CandidatesController# 初期化されていない定数CandidatesController :: Usermailer。それは元のQで強調表示された同じ行を参照します。 –

1

ファイル名には常にスネークケースを使用してください。

Z:/railsassignment/student/app/mailers/user_mailer.rb 

、NOT:

Z:/railsassignment/student/app/mailers/usermailer.rb 

必ずクラス名のキャメルケースを使用

UserMailer.welcome(@candidate).deliver_now 

、NOT:

Usermailer.welcome(@candidate).deliver_now 

定数の読み込みの仕組みに興味がありましたら、thisを参考にしてください。

関連する問題