0

ユーザーが承認または拒否できる週を提出するアプリケーションがあります。週のコントローラーでは、選択した週に繰り返し実行し、対応するユーザーを見つけて送信するための次の行があります。各ユーザーのメール:UserMailerの未定義のメソッド:クラス

elsif params[:commit] == "Reject selected weeks" 
    user_week = Week.where(id: params[:weeks_ids]) 
    user_week.update_all(approved?: false) 

    # fetch the set of user_emails by converting the user_weeks to user_ids 
    users = User.find(user_week.pluck(:user_id)) 
    users.each do |user| 
    #iterate over the users and send each one an email 
    UserMailer.send_rejection(user).deliver 
    end 
    flash[:info] = "Selected weeks were Rejected." 
    end 
    redirect_to weeks_path 

私は週に拒否しようとすると、私は次のエラーメッセージが表示されます。

undefined method `send_rejection' for UserMailer:Class 

を、私は、既存のコードに上の追加およびMVCの少しの知識を持っています、私が考えることができる唯一の問題はメーラーメトを置くことであろうdを間違ったファイルに書き込むか、不正なタイプのargをメーラーメソッドに送信する。 私のユーザモデルに含まれているメーラ "send_rejection"があります。

def send_rejection(user) 
    UserMailer.reject_timesheet(user).deliver_now 
end 

私user_mailer.rbファイル内の対応方法:

def reject_timesheet(user) 
    @greeting = "Hi" 
    mail to: user.email, subject: "Rejected Timesheet" 
end 

新しい私が間違っているつもりだ場所がわからレールとないようにします。

+1

Userモデルではなくuser_mailer.rbにsend_rejectionメソッドを配置しようとしましたか?私はUserMailerを使うと思います。それをそこに見せます。または、UserMailer.reject_timesheetを実行します。 –

+0

キラー、そうだよ – CodeBoy

+1

大文字のビットがそのファイルを呼び出している。ユーザー。 UserMailerがuserMailerを呼び出しています(これはファイルの最上部にあります)。 –

答えて

2

これはMVCの問題ではありませんが、send_rejectionの代わりにreject_timesheetを直接呼び出すのはなぜですか?あなたが言ったような方法がユーザーモデルで定義されているため、メソッドを呼び出すために、あなたがする必要があると思いますので、あなたは、エラーを取得している :私はあなたがしたい疑う

user.send_rejection 

た場合

あなたのコントローラで、その後
class User 
    def send_rejection 
    UserMailer.reject_timesheet(self).deliver_now 
    end 
end 

... 
    users.each do |user| 
    #iterate over the users and send each one an email 
    user.send_rejection 
    end 
... 

私はまた、あなたをクリーンアップする可能性が信じているあなただけ行うことができますよう、send_rejectionにユーザー引数を渡すために必要とされコードベースと少しリファクタリングするロジックがありますが、基本的にはこの方法でエラーを解決する必要があります。

役に立ったら教えてください

+0

ありがとう! @Rockwellも同様の修正を提案し、うまくいった。私はこのより詳細なアプローチをショットに与え、1秒で受け入れるでしょう – CodeBoy

+0

偉大な働き、説明に感謝! – CodeBoy

関連する問題