Action Mailer预览:在MessageMailerPreview中找不到电子邮件“new”

时间:2015-04-17 17:52:16

标签: ruby-on-rails ruby-on-rails-4 actionmailer

我有三个邮件,所有邮件都有效。但对于一个(联系表单),邮件预览不起作用,我不明白为什么。

错误消息:

undefined method 'email'
  def new_message(message)
    @message = message
    mail from: message.email, subject: "Message from #{message.name}"
  end

在app / mailers / message_mailer.rb中我有:

class MessageMailer < ApplicationMailer
  default to: "<info@myemail.com>",
  return_path: "<info@myemail.com>"
  def new_message(message)
    @message = message
    mail from: message.email, subject: "Message from #{message.name}"
  end
end

app / views / messages / new.html.erb的一部分:

<%= form_for :message, url: contact_path do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name, placeholder: 'Name', class: 'form-control' %>
  <%= f.label :email %>
  <%= f.email_field :email, placeholder: 'Email', class: 'form-control' %>
  <%= f.label :content %>
  <%= f.text_area :content, placeholder: 'Your message…', class: 'form-control' %>
  <%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

测试/邮寄者/预览/ test_mailer_preview.rb:

class MessageMailerPreview < ActionMailer::Preview
    message = [name: "My Name", email: "noreply@example.com", content: "This is my message"]
    MessageMailer.new_message(message)
  end
end

联系表单正在开发服务器上正常工作,其他两个邮件程序(密码重置和身份验证)也可以工作,对于最后两个邮件程序,预览也可以正常工作。这两个邮件程序在邮件程序中也有model.email,它确实有效。我不明白为什么联系表格邮件的预览会产生错误信息。

2 个答案:

答案 0 :(得分:0)

您的邮件程序类不是从ActionMailer继承而来的,如果您已经有一个ApplicationMailer类已经这样做了,那么您可以为它发布代码吗?否则试试这个。

class MessageMailer < ActionMailer::Base

答案 1 :(得分:0)

我发现如果我更换了 message = [name: 'My Name', email: 'noreply@example.com', content: 'This is my message']

message = Message.first
message.email = "example@example.com"

甚至只是

message = Message.first

预览确实有效。不明白为什么,因为我希望原来的配方也能发挥作用。