设置邮件程序时出现 NilClass 错误

NilClass error setting up mailer

我是第一次尝试设置邮件程序。我已经完全按照 RubyGuides Mailer Basics 了,或者我是这么想的。我不断收到 NilClass 错误。最初,这是因为我的电子邮件地址没有保存到数据库(如果离开控制器则保留)。现在我可以在 rails 控制台中看到我的电子邮件地址,但仍然 运行 进入 NilClass 或出现 "wrong number of arguments 0 for 1" 错误

这是我的控制器:

def create
@pc = Pc.new(pc_params)

respond_to do |format|
  if @pc.save
    TestMailer.message(@pc).deliver_later

    format.html { redirect_to @pc, notice: 'Pc was successfully created.' }
    format.json { render :show, status: :created, location: @pc }
  else
    format.html { render :new }
    format.json { render json: @pc.errors, status: :unprocessable_entity }
      end
    end
  end

我的邮件:

   class TestMailer < ApplicationMailer
      default from: 'notifications@example.com'

      def message(pc)
        @pc = pc
        @url  = 'http://example.com/login'
        mail(to: @pc.email, subject: 'Welcome to My Awesome Site')
      end
    end

我不明白我在这里缺少什么,有什么帮助吗?

离开屏幕不久后原路返回。看来我可能没有正确命名我的电子邮件模板。使用 Ruby 指南从头开始并使其正常工作。未来迷失灵魂的新代码:

控制器:

def create
@pc = Pc.new(pc_params)

respond_to do |format|
  if @pc.save
    PcsMailer.email(@pc).deliver_later

    format.html { redirect_to @pc, notice: 'Pc was successfully created.' }
    format.json { render :show, status: :created, location: @pc }
  else
    format.html { render :new }
    format.json { render json: @pc.errors, status: :unprocessable_entity }
  end
end

邮寄者:

class PcsMailer < ApplicationMailer
  default from: 'notifications@example.com'

  def email(pc)
    @pc = pc
    @url  = 'http://example.com/login'
    mail(to: @pc.email, subject: 'Welcome to My Awesome Site')
  end
end

留言:

   <!DOCTYPE html>
    <html>
      <head>
     <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
      </head>
      <body>
        <h1>Welcome to example.com </h1>
      </body>
    </html>

大部分内容直接从 Ruby 指南中复制,但为简单起见删除了一些内容。