【问题标题】:Action Mailer Preview: Email 'new' not found in MessageMailerPreview操作邮件预览:在 MessageMailerPreview 中找不到电子邮件“新”
【发布时间】:2015-04-21 00:23:16
【问题描述】:

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

错误信息:

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/mailers/previews/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,它确实有效。我不明白为什么联系表单邮件程序的预览会产生错误消息。

【问题讨论】:

  • 只是确保这里显而易见,但是您可以在MessageMailer 上发布类声明吗?
  • 我已将它们添加到问题中。

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


【解决方案1】:

事实证明,如果我更换 message = [name: 'My Name', email: 'noreply@example.com', content: 'This is my message']

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

甚至只是

message = Message.first

预览确实有效。不明白为什么,因为我希望原始公式也可以工作。

【讨论】:

    【解决方案2】:

    您的邮件程序类不是从ActionMailer 继承的,如果您已经有一个应用程序邮件程序类,这很好,您可以发布它的代码吗?否则试试这个。

    class MessageMailer < ActionMailer::Base
    

    【讨论】:

    • 我不确定在哪里可以找到您要求的代码(如果您可以指定,我会发布它)。我将app/mailers/message_mailer.rb 的第一行更改为class MessageMailer &lt; ActionMailer::Base,但预览的结果保持不变。只是为了确保:邮件程序在服务器上工作正常,只是预览不起作用。我还有第二个邮件程序(按照 Hartl 的 Rails 教程的步骤开发),邮件程序预览工作正常。该预览的设置在我看来是一样的。我已将其添加到我的问题中。
    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2014-07-29
    • 2020-09-28
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多