2017-05-04 23 views
1

私は、リストの利用可能な日付が今日のときにメーラーを起動する場所にメーラーを設定しようとしています。これを行うには、Date.todayを使用しています。他の関連するコードとエラーは以下の通りです。前もって感謝します。Rails 4 Mailer Uninitialized Constant

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

答えて

5

があなたのavailabke_date_mailer.rbの名前を変更し、正しい場所に保管してください:

app/mailers/listing_available_date_mailer.rb 

Railsはあなたのための魔法の多くを行いますが、あなたはその慣習に従うならば、魔法にのみ機能します。自動ロードを許可し、すべてのファイルを手動で要求する必要性を排除する規則の1つは、クラス名(ラクセルの場合)が定義されているファイルの名前(アンダースコア)と一致しなければならないということです。

次の手順では、ビューの名前を変更する必要があります。 RailsのガイドでAction Mailer Basicsについて

app/views/listing_available_date_mailer/listing_available_expire.html.erb 

読む:それはこのような名前する必要がRailsの規則を次ので。

+0

私は名前がひどいです。助けてくれてありがとう! –

関連する問題