我正在学习如何在rails中使用ActionMailer发送电子邮件,而我在将参数传递到OrderMailerPreview类时遇到问题。我需要将order_id传递给new_order方法,以便查找相应的顺序。这是代码:
# Preview all emails at http://localhost:3000/rails/mailers/order_mailer
class OrderMailerPreview < ActionMailer::Preview
# Preview this email at http://localhost:3000/rails/mailers/order_mailer/new_order
def new_order(order_id)
@order = Shoppe::Order.find(order_id)
OrderMailer.new_order(order)
end
end
如何将order_id导入此方法?
答案 0 :(得分:0)
ActionMailer::Preview
只是用虚假或种子数据渲染预览,并且据我所知不支持参数传递。相反,它只是使用url基于类/方法定位文件。这与其作为开发辅助用途的预期用途相对应。
如果您需要在邮件程序预览中使用动态数据,或者例如让预览可供最终用户查看,则应创建一个呈现邮件程序视图的控制器。
class OrderMailerPreviewController < ApplicationController
# GET /mailers_previews/orders/:id
def show
@order = Order.find(params[:id])
render "mailers/order", layout: nil
end
end