如何将参数传递给Rails中的MailerPreview类?

时间:2016-04-16 14:55:59

标签: ruby-on-rails ruby

我正在学习如何在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导入此方法?

1 个答案:

答案 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