Rails 4邮件程序未初始化的常量
问题描述:
我想设置一个邮件程序,当列表的可用日期是今天的时候,它会启动邮件程序。要做到这一点,我正在使用Date.today
。其他相关的代码和错误如下。提前致谢。Rails 4邮件程序未初始化的常量
availabke_date_mailer.rb
class ListingAvailableDateMailer < ActionMailer::Base
default from: "Nooklyn <[email protected]>"
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的做了很多的魔法给你,但如果你遵循其约定的魔力才起作用。允许自动加载并且不需要手动要求所有文件的惯例之一是类名称(在camelcase中)必须与文件名(在下划线中)匹配,它们在其中被定义。
在下一步中,您将不得不重新命名您的视图。因为它需要以下Rails的惯例被命名为这样的:
app/views/listing_available_date_mailer/listing_available_expire.html.erb
阅读有关Rails的指南的Action Mailer Basics。
我的命名很糟糕。谢谢您的帮助! –