2016-07-09 4 views
1

Здравствуйте, я получаю недостающую ошибку шаблона в моем коде для формы контакта, которую я создаю, несмотря на то, что файлы находятся в том, что я считаю правильным местом, и все остальное точно так же, как действие Я внимательно следил за учебниками. Я даже переделал почтовую программу, и она все равно не сработает.Действие Mailer Отсутствует Ошибка шаблона, если тело не указано

contactmailer

class ContactMailer < ApplicationMailer 

default from: '[email protected]' 

layout 'mailer' 

def notify(contact) 
    @contact = contact 
    mail(to: '[email protected]', subject: 'Notification') 
end 
end 

контакт контроллер

def create 

    @contact = Contact.new(contact_params) 

    if @contact.save 

    ContactMailer.notify(@contact).deliver_now 
    redirect_to root_path 

    else 
    render :new 

    end 


end 

просмотров/contact_mailer/notify.text.erb Test

конфиг/development.rb

Rails.application.configure do 
# Settings specified here will take precedence over those in  config/application.rb. 

# In the development environment your application's code is reloaded on 
# every request. This slows down response time but is perfect for development 
# since you don't have to restart the web server when you make code changes. 
config.cache_classes = false 

# Do not eager load code on boot. 
config.eager_load = false 

# Show full error reports and disable caching. 
config.consider_all_requests_local  = true 
config.action_controller.perform_caching = false 

# Don't care if the mailer can't send. 
config.action_mailer.raise_delivery_errors = true 

# Print deprecation notices to the Rails logger. 
config.active_support.deprecation = :log 

# Raise an error on page load if there are pending migrations. 
config.active_record.migration_error = :page_load 

# Debug mode disables concatenation and preprocessing of assets. 
# This option may cause significant delays in view rendering with a large 
# number of complex assets. 
config.assets.debug = true 

# Asset digests allow you to set far-future HTTP expiration dates on all assets, 
# yet still be able to expire them through the digest params. 
config.assets.digest = true 

# Adds additional error checking when serving assets at runtime. 
# Checks for improperly declared sprockets dependencies. 
# Raises helpful error messages. 
config.assets.raise_runtime_errors = true 

config.action_mailer.perform_deliveries = true 
config.action_mailer.delivery_method = :smtp 
# SMTP settings for gmail 
config.action_mailer.smtp_settings = { 
:address    => "smtp.gmail.com", 
:port     => 587, 
:domain    => "gmail.com", 
:enable_starttls_auto => true, 
:user_name   => '[email protected]', 
:password    => 'examplepassword', 
:authentication  => "plain", 
:ssl => false 
:openssl_verify_mode => 'none' 
} 
end 

если добавить параметры тела по почте она работает, но не работает иначе.

EDIT: ERROR ПОЛУЧЕНИИ

ContactMailer#notify: processed outbound mail in 31.9ms 
Completed 500 Internal Server Error in 61ms (ActiveRecord: 3.7ms) 

ActionView::MissingTemplate (Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in: 
    * "/home/ubuntu/workspace/autosales2/app/views" 
): 
    app/mailers/contact_mailer.rb:7:in `notify' 
    app/controllers/contacts_controller.rb:15:in `create' 


    Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (11.1ms) 
    Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (5.2ms) 
    Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.3ms) 
    Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb within rescues/layout (93.5ms) 
+0

Вы также должны добавить ошибку с обратным отсчетом. –

ответ

1

Вы только простой шаблон текста на месте. Как насчет .html.erb?

Попробуйте этот код, чтобы ограничить почтовую программу для отправки только обычный текст сообщения электронной почты, если это то, что вы хотите:

def notify(contact) 
    @contact = contact 
    mail(to: '[email protected]', subject: 'Notification') do |format| 
     format.text 
    end 
end 

В противном случае, если вы хотите HTML электронной почты, обеспечить их шаблон, а также.

UPDATE

Из текста ошибки, очевидно, что шаблон макета почтовой программы не может быть найден. У вас есть это в вашей почтовой программе:

layout 'mailer' 

Это означает, что любой конкретный шаблон действий будет оказываться в рамках указанного шаблона макета. Поэтому вам нужен этот шаблон макета. Вы можете видеть, что почтовая программа ожидает, что он будет называться layouts/mailer и ищет его в app/views, что делает его

app/views/layouts/mailer.html.erb # for html emails 
app/views/layouts/mailer.text.erb # for plain text emails 

Если вам не нужен общий макет для электронной почты, вы можете просто удалить layout 'mailer' линии и ее должно сработать.

+0

Я тоже пробовал это без везения и также имел файл html. Я где-то читал, что может быть, что весенний драгоценный камень загружает вещи в каком-то странном порядке, знаете ли вы, как это может быть исправлено? –

+0

Пожалуйста, добавьте ошибку, которую вы получаете, в комплекте с backtrace. –

+0

Отсутствует макет шаблона/почтовая программа с {: locale => [: en],: formats => [: html],: variantants => [],: handlers => [: erb,: builder,: raw,: ruby, : slim,: coffee,: jbuilder]}. Поиск: * "/ home/ubuntu/workspace/autosales2/app/views" –

Смежные вопросы