Попытка отправить добровольную форму через SMTP с использованием Gmail, Sendgrid или чего-либо еще, однако у меня настроена программа Action Mailer, и я предполагаю, что я действительно должен видеть, что письмо приходит, когда я смотрю на него.Я вижу эту ошибку ниже, но не вижу никакой ошибки или получаю какое-либо электронное письмо вообще.Я пытался писать путы в своем действии создания, но я тоже не вижу их, так что, надеюсь, это будет легко исправить, поскольку я что-то упустил или что-то не соответствует обычному соглашению Rails.
Я используюrails 5.2
Что я вижу на сервере:
Started GET "/volunteer?utf8=%E2%9C%93&authenticity_token=AZ%2FAflVf%2BlqRUYm45Jo82wAMpq%2B%2BY%2F93piLbeRXdK5n%2FQIWhuaUL3Oe2%2FSwzR%2FCLvj%2FAKW%2BBgD8dPd8vJYRDBA%3D%3D&volunteer_message%5Bname%5D=test+name&volunteer_message%5Bemail%5D=email%40test.com&volunteer_message%5Bphone_number%5D=88888888&volunteer_message%5Bbody%5D=test+email&commit=Send" for 127.0.0.1 at 2018-10-10 17:29:42 +0100
Processing by PagesController#volunteer as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"AZ/AflVf+lqRUYm45Jo82wAMpq++Y/93piLbeRXdK5n/QIWhuaUL3Oe2/SwzR/CLvj/AKW+BgD8dPd8vJYRDBA==", "volunteer_message"=>{"name"=>"test name", "email"=>"email@test.com", "phone_number"=>"88888888", "body"=>"test email"}, "commit"=>"Send"}
Хорошо, так вот мой код и способ, которым все это изложено.
PagesController.rb содержит страницу, называемую волонтером, и содержит частичную часть (называемую _new.html.erb), которая является формой, которая находится в своей собственной папке, называемой волонтером_messages
views / добровольцев_messages / _new.html.erb
<%= simple_form_for @volunteer_message, url: create_volunteer_message_url do |f| %>
<%= @volunteer_message.errors.full_messages.join(', ') %>
<%= f.input :name, placeholder: 'name' %>
<%= f.input :email, placeholder: 'email' %>
<%= f.input :phone_number, placeholder: 'phone number' %>
<%= f.input :body, placeholder: 'body' %>
<%= f.submit 'Send' %>
<% end %>
маршруты созданы
# is this causing a problem do you think?
get '/volunteer' => 'pages#volunteer'
# volunteer message routes
get '/volunteer', to: 'volunteer_message#new', as: 'new_volunteer_message'
post '/volunteer', to: 'volunteer_message#create', as: 'create_volunteer_message'
models / добровольцы_message.rb
class VolunteerMessage
include ActiveModel::Model
attr_accessor :name, :email, :phone_number, :body
# validates :name, :email, :phone_number, :body, presence: true
end
почтовые службы / волонтер_мессы_mailer.rb
class VolunteerMessageMailer < ApplicationMailer
# Subject can be set in your I18n file at config/locales/en.yml
# with the following lookup:
#
# en.volunteer_message_mailer.volunteer.subject
#
def volunteer(volunteer_message)
@body = volunteer_message.body
@subject = "Volunteer Request sent from www.myapp.com"
mail to: "myemail@example.com", from: volunteer_message.email
end
end
волонтер_мессейса_controller.rb
class VolunteerMessagesController < ApplicationController
def new
@volunteer_message = VolunteerMessage.new
end
def create
@volunteer_message = VolunteerMessage.new volunteer_message_params
if @volunteer_message.valid?
VolunteerMessageMailer.volunteer(@volunteer_message).deliver_now
redirect_to new_volunteer_message_url
flash.now[:notice] = "We have received your volunteer request and will be in touch soon!"
else
flash.now[:notice] = "There was an error sending your volunteer request. Please try again."
render :new
end
end
private
def volunteer_message_params
params.require(:volunteer_message).permit(:name, :email, :phone_number, :body)
end
end
pages_controller.rb
class PagesController < ApplicationController
def volunteer
@lead = Lead.new
@volunteer_message = VolunteerMessage.new
end
end
development.rb
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
enable_starttls_auto: true,
user_name: 'me@gmail.com',
password: 'gmailapppassword',
authentication: 'plain'
}
Не уверен, что еще я могу добавить здесь.Я не думаю, что мне даже нужно, чтобы он stmp_settings видел, как программа-мейлер действительно показывает шаблон отправляемого письма?
Также я предполагаю, что это что-то связано с формой и маршрутом, потому что добавленный ive помещает сообщения в действие create на контроллере волонтеров-сообщений, и не видит их в журнале моего сервера.
Я не получаю никаких ошибок при нажатии кнопки отправки.Я замечаю, что параметры входят в URL, но это все.он остается там, а когда обновления остаются на том же экране.
пример:
http://localhost:3000/volunteer?utf8=%E2%9C%93&authenticity_token=AZ%2FAflVf%2BlqRUYm45Jo82wAMpq%2B%2BY%2F93piLbeRXdK5n%2FQIWhuaUL3Oe2%2FSwzR%2FCLvj%2FAKW%2BBgD8dPd8vJYRDBA%3D%3D&volunteer_message%5Bname%5D=test+name&volunteer_message%5Bemail%5D=email%40test.com&volunteer_message%5Bphone_number%5D=88888888&volunteer_message%5Bbody%5D=test+email&commit=Send
Подсказка в тексте сервера на изображении, которое показывает параметры, поступающие на контроллер страниц.Я не очень хочу этого.Просто хочу, чтобы там было частичное, но действие для работы действия create в контроллере волонтера.
Любая помощь будет высоко ценится.Спасибо.