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 

错误: enter image description here

重新命名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

+0

我的命名很糟糕。谢谢您的帮助! –