【发布时间】:2016-04-14 06:35:02
【问题描述】:
我正在使用 ActionMailer Preview 测试我的一个邮件程序,并正在使用 Struct 创建我的对象
class TransactionMailerPreview < ActionMailer::Preview
include Roadie::Rails::Automatic
def transaction_complete_mailer
orders = Struct.new(:image, :image_size, :mount, :frame, :frame_color)
transaction = Struct.new(:first_name, :email)
@transaction = transaction.new('Richard Lewis', 'test@gmail.com')
@orders = orders.new("Test Print Name", "10x8 Image Size", "10x8 Mount Size", "10x8 Frame Size", "White Frame")
TransactionMailer.transaction_complete_mailer(@transaction, @orders)
end
end
这是我真正的邮件类
class TransactionMailer < ApplicationMailer
default from: ENV['EMAIL_ADDRESS']
def transaction_complete_mailer(transaction, orders)
@transaction = transaction
@orders = orders
attachments.inline['photography-logo-text.png'] = File.read(Rails.root.join('app', 'assets', 'images', 'photography-logo-text.png'))
mail(to: @transaction.email, subject: 'Your order from Glenn GB Photography') do |format|
format.html { render file: 'transaction_mailer/transaction_message.html.erb', layout: 'mailer' }
end
end
end
在我看来,我会遍历@orders,因为可能有多个
transaction_message.htmnl.erb
<% @orders.each do |order| %>
<div class="order-summary">
<p><span class="bold">Print:</span><%= order.image %></p>
<p><span class="bold">Print Size:</span><%= order.image_size %></p>
<p><span class="bold">Mount:</span><%= order.mount %></p>
<p><span class="bold">Frame:</span><%= order.frame %></p>
<p><span class="bold">Frame Color:</span><%= order.frame_color %></p>
</div>
<% end %>
当我在预览中操作此邮件时,我收到一个错误
undefined method `image' for "Test Print Name":String
这里有两个问题
为什么会出现错误?
如何创建多个订单对象?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 actionmailer