我是Rails的新手,并且在如何在我的邮件程序中实现动态值方面苦苦挣扎。
下面的代码除了 reply_to 之外一切正常,我想要一个动态值,但我不知道怎么做。
params @name,@ email,@ message在表单上捕获,我希望reply_to值与从@email传递的params相同。
所以,基本上这一点是有人可以预订一个活动,然后它会将他们的详细信息通过电子邮件发送给活动经理,然后只需按“回复”,它就会回复用户在表格上填写的电子邮件
class BookingMailer < ActionMailer::Base
default from: "notifications@example.com"
default reply_to: @email
def contact_mailer(name,email,message)
@name = name
@email = email
@message = message
mail(to: 'info@example.com', subject: 'Event Booking', reply_to: @email)
end
end
我查看了API文档,但在使用动态值时,它们似乎引用了数据库中的用户。
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
如果您想为没有设置选项的方法使用某些内容(例如,您设置了default from:
),则只设置默认值,因此您无需设置{{ 1}}每次,如果没有设置,它将使用默认值。
假设您的控制器将电子邮件地址作为第二个参数传递,那么您的代码应该可以正常工作,但通常我会通过预订:
mail(from: "notifications@example.com"...)
然后从邮件中提取您想要的信息:
class BookingController < ApplicationController
def create
@booking = Booking.new(safe_params)
if @booking.save
BookingMailer.contact_mailer(@booking).deliver
else
# alarums!
end
end
end
理想情况下,您应该删除行class BookingMailer < ActionMailer::Base
default from: 'blah@blah.com'
def contact_mailer(booking)
@booking = booking
mail(to: 'info@example.com', subject: 'Event booking', reply_to: @booking.email)
end
end
,因为它正在尝试使用类级别实例变量default reply_to: @email
,而不是您想要的实例变量@email
。有关类变量,实例变量和类实例变量之间差异的示例,请参见此处:http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/