我有一個應用程序,用戶提交可以批准或拒絕的星期,並且在我的星期控制器中,我有以下幾行代碼用於遍歷選定的幾周,找到相應的用戶併發送每個用戶的電子郵件: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
新建軌道和不知道我要去哪裏錯了。
您是否嘗試過放置send_rejection方法內部user_mailer.rb而不是用戶模式?我想使用UserMailer。使它看起來在那裏。或者只是做UserMailer.reject_timesheet。 –
兇手,你是對的 – CodeBoy
大寫的位是調用該文件。用戶。調用用戶模型,UserMailer調用userMailer(它位於文件的最頂端)。 –