開発モードでメーラーをセットアップするとき、いつも問題に遭遇するように思えます。自分のセットアップに問題は見られません。他の誰かが何かを見ているのではないでしょうか? 連絡先フォームからメールを送信すると、リダイレクトがなく、メールのパラメーターが URL を介して渡され、同じページがレンダリングされます。
http://localhost:3000/contact?utf8=%E2%9C%93&authenticity_token=123456exampletoken%3D&message%5Bname%5D=richard+lewis&message%5Bemail%5D=richlewis14%40gmail.com&message%5Bwebsite%5D=bbc.co.uk&message%5Bmessage%5D=test%0D%0A&commit=Send+Message
わかりましたので、私の開発環境は次のようになります
#Mailer Config
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { host: "localhost:3000" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: "myusername",
password: "mypassword"
}
コンタクトコントローラーを持っています
class ContactController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(params[:message])
if @message.valid?
ContactMailer.send_mail(@message).deliver
redirect_to(root_path, :notice => "Thanks for your message, I will be in touch soon")
else
render :new
end
end
end
メーラー
class ContactMailer < ActionMailer::Base
default from: "richlewis14@gmail.com"
def send_mail(message)
@message = message
mail(to: "richlewis14@gmail.com", subject: "Message From Blog Site")
end
end
メーラー テキスト ファイル
<p> You have a new Email</p>
<p><%= @contact.name %></p>
<p><%= @contact.email %></p>
<p><%= @contact.website %></p>
<p><%= @contact.message %></p>
メッセージ モデル
class Message
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name, :email, :website, :message
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
そして最後に私のルート
#CONTACT FORM
match 'contact' => 'contact#new', :as => 'contact', :via => :get
match 'contact' => 'contact#create', :as => 'contact', :via => :post
アップデート
以下の提案にもかかわらず、フォームを投稿できません。取得リクエストをレンダリングし続けます。フォームは次のようになります
<div id="contact-form-wrap">
<form id="contact-form">
<%= form_for @message, :url => contact_path, :method => :post do |f| %>
<span class="c-note">Asunt in anim uis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in anim id est laborum. Allamco laboris nisi ut aliquip ex ea commodo consequat. Aser velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint</span>
<div class="contact-left">
<p class="input-block clearfix">
<%= f.text_field :name, :id => 'contact_name', :placeholder => 'Name' %>
</p>
<p class="input-block">
<%= f.text_field :email, :id => 'contact_email', :placeholder => 'Email' %>
</p>
<p class="input-block last">
<%= f.text_field :website, :id => 'contact_url', :placeholder => 'Website' %>
</p>
</div><!--end:contact-left-->
<div class="contact-right">
<p class="textarea-block">
<%= f.text_area :message, :id => 'contact_message', :rows => 6, :placeholder => 'Message' %>
</p>
</div><!--end:contact-right-->
<div class="clear"></div>
<p class="contact-button clearfix">
<%= f.submit 'Send Message', :id => 'submit-contact' %>
</p>
<div class="clear"></div>
<% end %>
</form>
</div><!--contact-form-wrap-->