2013-12-03 4 views
4

У меня есть почтовая программа, которую я вижу в моем журнале, отправляется, но тело письма не содержит ничего из представления почтовой программы.Rails рассылки почтовой и почтовой рассылки в подпапке не работает

Это связано с тем, что я поместил вещи в подпапки, и я попытался использовать :template_path в своей функции mail, но безрезультатно.

приложение/отправители/маркетинг/marketing_mailer.rb

class Marketing::MarketingMailer < ActionMailer::Base 

    require 'mail' 
    address = Mail::Address.new "[email protected]" # ex: "[email protected]" 
    address.display_name = "Text" # ex: "John Doe" 
    # Set the From or Reply-To header to the following: 
    address.format # returns "John Doe <[email protected]>" 
    default from: address 

    # Sends an email when someone fills out the contact form 
    def contact(name, email, message) 
     @name = name 
     @email = email 
     @message = message 
     mail(:subject => "Test", :to => '[email protected]', :reply_to => @email) # <== I've tried using :template_path => 'marketing', 'marketing/marketing_mailer', etc, but none worked. 
    end 
end 

/app/views/marketing/marketing_mailer/contact.html.erb

<!DOCTYPE html> 
<html> 
    <head> 
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 
    </head> 
    <body> 
    <p>Name: <%= @name %></p> 
    <p>Email: <%= @email %></p> 
    <p>Message: <%= @message %></p> 
    </body> 
</html> 

Я заметил, что Разрабатывает вид рассыльщика внутри/views/dev// mailers/... поэтому я знаю, что это возможно, но я не уверен, как это сделать.

+0

Это зависит от используемой вами версии рельсов. Пожалуйста, укажите свою версию Rails –

+0

. Подобный вопрос - http://stackoverflow.com/questions/10017907/rails-mailer-views-in-separated-directory –

+0

Я использую рельсы 3.2 – Catfish

ответ

2

Я вернулся к этому проекту сегодня, и это, кажется, не найти шаблон сегодня нет проблема без указания шаблона_path.

Как это ни печально, все, что мне нужно было сделать, это остановить и перезапустить мой сервер, чтобы мои просмотры мэйлера были подняты.Так как другие представления получаются без остановки и запуска моего сервера, я очень этому удивляюсь.

+0

Такое поведение я знаю из шаблонов просмотров. Шаблон просматривается, но в то время его пока нет. Сервер не находит его, но помнит тот факт, что его там нет. Затем он не будет искать его до следующего перезапуска, даже если вы его добавили. – CMW

2

Поскольку ваш файл находится в формате .html.erb, вам может потребоваться указать, что вы хотите использовать этот формат. Как так:

mail(:subject => "Test", :to => '[email protected]', :reply_to => @email) do 
    format.html 
end 

Как правило, ваш шаблон просто должен быть подобран автоматически, так как имена совпадают, но есть, вероятно, второй файл с тем же именем, заканчивающимся в .text.erb или какой-либо другой вещи, которая попадет в пути поиск шаблона.

EDIT1 (дикий догадка) Помимо вопросов шаблона поиска, единственного другого источник проблем, которые я могу себе представить, что бы ваш переменный экземпляр. Возможно, @message должен быть чем-то другим, и вы вмешиваетесь в внутренние компоненты, поэтому его переименование может помочь. Согласно коду на apidock, почта использует в некоторых местах @variables. Я допускаю, что это далеко не все.

EDIT2 (описание проблемы, с которыми сталкиваются здесь) Поведение за актуальной проблемы - не находя новый шаблон до перезагрузки сервера - как это работает:

Шаблон получает посмотрел вверх, но в то время, его пока нет. Сервер не находит его, но помнит тот факт, что его там нет. Затем он не будет искать его до следующего перезапуска, даже если вы его добавили.

Итак, перезагрузка исправит это.

Вы пытались выключить и снова включить его?

+0

'.html.erb' является значением по умолчанию, которое ожидается при создании почтовой программы с генератором рельсов. Http://guides.rubyonrails.org/action_mailer_basics.html – Catfish

+0

вы попробовали? – CMW

+0

@Catfish Я также добавил еще одну догадку, хотя и надуманную. – CMW

2

Вы пробовали почту с {: template_path => 'marketing/marketing_mailer,: template_name =>' contact '}?

Имя шаблона, вероятно, ожидает, что пространство имен в имени файла как-то

3

ли работа без шаблона Rendering

class Marketing::MarketingMailer < ActionMailer::Base 
    def welcome_email(user, email_body) 
    mail(to: user.email, 
    body: email_body, 
    content_type: "text/html", 
    subject: "Already rendered!") 
    end 
    end 
Смежные вопросы