Rails 4 邮件程序未初始化常量
Rails 4 Mailer Uninitialized Constant
我正在尝试设置一个邮件程序,当列表的可用日期是今天时,它将触发一个邮件程序。为此,我使用 Date.today
。其他相关代码和错误如下。提前致谢。
availabke_date_mailer.rb
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
listing_available_expire_notification.html.erb:
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>`
available_date.rake:
namespace :listings do
desc "Send a message to an agent if the available date on their listing has passed"
task listing_available_expire: :environment do
Listing.all.each do |listing|
if listing.date_available == Date.today
ListingAvailableDateMailer.listing_available_expire(listing,listing.listing_agent).deliver_now
end
end
end
end
错误:
重命名您的 availabke_date_mailer.rb
并将其存储在正确的位置:
app/mailers/listing_available_date_mailer.rb
Rails 为您施展了很多魔法,但只有您遵循其惯例,魔法才会发挥作用。允许自动加载并消除手动要求所有文件的约定之一是 class 名称(驼峰式)必须与定义它们的文件名(下划线)相匹配。
在下一步中,您必须重命名您的视图。因为遵循 Rails 约定,它需要这样命名:
app/views/listing_available_date_mailer/listing_available_expire.html.erb
阅读 Rails 指南中的 Action Mailer Basics。
此错误的另一个原因是如果您尝试运行类似
UserMailer.signup_confirmation(@user).deliver
NameError: uninitialized constant UserMailer
来自 rails 控制台。
请注意,完全相同的代码将在控制器中工作。
测试此类代码的一种简单方法是将其简单地放置在不需要任何努力执行的控制器操作中,例如,用户显示视图是一个很好的候选者,因此只需加载该页面就会导致要发送的电子邮件
我正在尝试设置一个邮件程序,当列表的可用日期是今天时,它将触发一个邮件程序。为此,我使用 Date.today
。其他相关代码和错误如下。提前致谢。
availabke_date_mailer.rb
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
listing_available_expire_notification.html.erb:
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>`
available_date.rake:
namespace :listings do
desc "Send a message to an agent if the available date on their listing has passed"
task listing_available_expire: :environment do
Listing.all.each do |listing|
if listing.date_available == Date.today
ListingAvailableDateMailer.listing_available_expire(listing,listing.listing_agent).deliver_now
end
end
end
end
错误:
重命名您的 availabke_date_mailer.rb
并将其存储在正确的位置:
app/mailers/listing_available_date_mailer.rb
Rails 为您施展了很多魔法,但只有您遵循其惯例,魔法才会发挥作用。允许自动加载并消除手动要求所有文件的约定之一是 class 名称(驼峰式)必须与定义它们的文件名(下划线)相匹配。
在下一步中,您必须重命名您的视图。因为遵循 Rails 约定,它需要这样命名:
app/views/listing_available_date_mailer/listing_available_expire.html.erb
阅读 Rails 指南中的 Action Mailer Basics。
此错误的另一个原因是如果您尝试运行类似
UserMailer.signup_confirmation(@user).deliver
NameError: uninitialized constant UserMailer
来自 rails 控制台。
请注意,完全相同的代码将在控制器中工作。
测试此类代码的一种简单方法是将其简单地放置在不需要任何努力执行的控制器操作中,例如,用户显示视图是一个很好的候选者,因此只需加载该页面就会导致要发送的电子邮件