Во-первых, я знаю, что attr_accessible устарел в Rails 4, но как насчет attr_accessor?Проблема с attr_accessor в этой форме контакта в Rails 4?
Когда вы нажимаете submit, он возвращает ошибку «Template is Missing», но это потому, что он попадает в ошибку где-то в процессе передачи, а затем пытается вернуть «connect # create», который не существует как физическая страница.
Когда я проверяю файлы журнала, я получаю ошибку внутреннего внутреннего сервера при попытке отправить контактную форму, и я не уверен, что использование attr_accessor в Rails 4 является виновником. Есть ли новый способ написать это?
class Message
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name, :email, :phone, :subject, :company, :title, :market, :body
validates :name, :email, :subject, :company, :body, :presence => true
validates :email, :format => { :with => %r{[email protected]+\..+} }, :allow_blank => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
Выше модель сообщение для контактной формы:
ли что-то в процессе отправки данных?
Остальная часть кода функциональности контакт почта:
Контакт Mailer
class ContactMailer< ActionMailer::Base
default :from => "[email protected]"
default :to => "{{MY EMAIL}}"
def new_message(message)
@message = message
mail(:subject => "Test Message")
end
end
В/просмотров/contact_mailer/есть new_message.text.erb файл:
Name: <%= @message.name %>
Email: <%= @message.email %>
Phone: <%= @message.phone %>
Subject: <%= @message.subject %>
Company: <%= @message.company %>
Title: <%= @message.title %>
Market: <%= @message.market %>
Body: <%= @message.body %>
Мои адреса являются следующими:
match 'connect' => 'connect#index', :as => 'connect', :via => :get
match 'connect' => 'connect#create', :as => 'connectpost', :via => :post
на соединение контроллера страницы:
class ConnectController < ApplicationController
def index
@message = Message.new
end
def create
@message = Message.new(params[:message])
if @message.valid?
NotificationsMailer.new_message(@message).deliver
redirect_to(connect_path, :notice => "Message was successfully sent.")
else
flash.now.alert = "Please fill all fields."
render :new
end
end
end
И, наконец .... настройки SMTP в /config/initializers/smtp_settings.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "{{SITE DOMAIN}}",
:user_name => "{{GMAIL EMAIL}}",
:password => "{{GMAIL EMAIL PASSWORD}}",
:authentication => "plain",
:enable_starttls_auto => true
}
Это не attr_accessor - я готов поспорить, что это ваша почтальон. Прокомментировать строку в ConnectController # создать, где вы отправляете почту, а затем повторить попытку? Если это так, проблема может быть связана с вашими проверками – bodacious