Rails 中 ActionMailer Mandrill 的问题
Posted
技术标签:
【中文标题】Rails 中 ActionMailer Mandrill 的问题【英文标题】:Issue with ActionMailer Mandrill in Rails 【发布时间】:2015-02-16 06:18:25 【问题描述】:我在 Rails 中创建了一个出租车预订平台。我在生产中使用 Mandrill smtp 设置向我平台的用户发送预订确认邮件。然后我使用以下代码生成了一个名为 user_mailer 的邮件程序:
class UserMailer < ActionMailer::Base
default :from => "my_company_email"
def booking_confirmation(user)
@user = user
mail(:to => user.email, :subject => "Booking Confirmation")
end
end
然后我在 user_mailer 视图中创建了 booking_confirmation.html.erb 页面,其中包含一些通用内容。最后,我在我的一个控制器中调用了 user_mailer,如下所示:
UserMailer.booking_confirmation(current_user).deliver
我的问题是,当我想在发送给客户的邮件中包含更多详细信息(例如旅行日期、旅行时间等)时。我正在我的 booking_confirmation.html.erb 页面中尝试此操作:<%= @user.bookings.last.date %>
向客户显示旅行日期。但这不会显示。为什么会这样?
【问题讨论】:
【参考方案1】:我会像这样通过预订
UserMailer.booking_confirmation(current_user, booking.id).deliver
那么在class UserMailer
我会这样做
class UserMailer < ActionMailer::Base
default :from => "my_company_email"
def booking_confirmation(user, booking)
@user = user
@booking = Booking.find(booking)
mail(:to => user.email, :subject => "Booking Confirmation")
end
end
现在在您的 erb 上,您应该可以使用 @booking.date
【讨论】:
【参考方案2】:这不是山魈问题。应用程序代码有问题。 检查您的以下代码是否包含上次预订的日期值。
@user.bookings.last.date
【讨论】:
以上是关于Rails 中 ActionMailer Mandrill 的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails3 / ActionMailer 中设置 Message-ID 邮件头
Rails ActionMailer 用户邮件发送器 无方法
Rails-如何测试ActionMailer发送了特定附件?