【发布时间】:2017-07-24 01:44:38
【问题描述】:
我有一个应用程序,用户可以在其中提交可以批准或拒绝的周数,在我的周数控制器中,我有以下几行旨在迭代选定的周数,找到相应的用户并向每个用户发送电子邮件:
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 知之甚少,所以我能想到的唯一问题是将邮件方法放在错误的文件中或向邮件方法发送不正确类型的 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
刚接触rails,不知道哪里出错了。
【问题讨论】:
-
您是否尝试过将 send_rejection 方法放在 user_mailer.rb 而不是 User 模型中?我认为使用 UserMailer。让它看起来在那里。或者只是做 UserMailer.reject_timesheet。
-
杀手,你是对的
-
大写位正在调用该文件。用户。调用用户模型,UserMailer 正在调用 userMailer(这是在文件的最顶部)。
标签: ruby-on-rails ruby model-view-controller ruby-on-rails-5