Rails 4 Mailer未初始化常量

时间:2017-05-04 18:40:57

标签: ruby-on-rails ruby actionmailer mailer

我正在尝试将邮件设置到今天列表的可用日期,它将触发邮件。为此,我使用的是virtual。其他相关代码和错误如下。提前谢谢。

availabke_date_mailer.rb

Date.today

listing_available_expire_notification.html.erb:

class ListingAvailableDateMailer < ActionMailer::Base
default from: "Nooklyn <help@nooklyn.com>"

  def listing_available_expire(listing, agent)
    @listing = listing
    @agent = agent
    mail to: "#{agent.email}", subject: 'Availability of your listing needs to be changed!'
  end
end

available_date.rake:

Hiya <%= @agent.first_name %>,<br><br>

The Available Date for your listing has passed. Please make the necessary changes.<br><br>

Listing: <%= link_to @listing.short_address, @listing, target: "_blank" %><br><br>
Available Date: <%= @listing.date_available %><br><br>`

错误: enter image description here

2 个答案:

答案 0 :(得分:5)

重命名availabke_date_mailer.rb并将其存储在正确的位置:

app/mailers/listing_available_date_mailer.rb

Rails为你带来了很多魔力,但只有按照惯例,魔法才有效。允许自动加载并且无需手动要求所有文件的惯例之一是类名(在camelcase中)必须与定义它们的文件名(下划线)相匹配。

在下一步中,您必须重命名视图。因为遵循Rails约定,它需要像这样命名:

app/views/listing_available_date_mailer/listing_available_expire.html.erb

阅读Rails指南中的Action Mailer Basics

答案 1 :(得分:0)

此错误的另一个原因是如果您尝试运行类似

UserMailer.signup_confirmation(@user).deliver
NameError: uninitialized constant UserMailer

来自 rails 控制台。

请注意,完全相同的代码在控制器上工作。

测试此类代码的一种简单方法是将其简单地放置在不需要任何执行的控制器操作中,例如,用户显示视图是一个很好的候选者,因此简单地加载该页面将导致一封电子邮件发送