投稿されていないフォームに問題があり、ログには何も表示されません。問題がアクティブモデル、ファイル名の規則、またはルーティングに起因するかどうかはわかりません。メッセージは送信されません。
私のコントローラーはかなり基本的なもので、*promessages_controller.rb* というファイルにあります。
# coding: utf-8
class PromessagesController < ApplicationController
def new
@promessage = Promessage.new
end
def create
@promessage = Promessage.new(params[:promessage])
if @promessage.valid?
PromessageMailer.contact_us(@promessage).deliver
redirect_to(root_path, :notice => "Sent.")
else
redirect_to(root_path, :notice => "Error")
end
end
end
私のメーラーは *promessage_mailer.rb* というファイルにあります
class PromessageMailer < ActionMailer::Base
def contact_us(message)
@message = message
mail(:to => 'xxx@gmail.com', :subject => "test", :from => "info@mydomain.com")
end
end
私の activemodel モデルはpromessage.rbというファイルにあり、次のものが含まれています。
class Promessage
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :email, :name, :body
validates :name, :email, :body, :presence => true
validates :email, :format => { :with => %r{.+@.+\..+} }, :allow_blank => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
私のフォームはnew.html.erbにあり、views/promessagesの下にあります
<%= simple_form_for @promessage do |f| %>
<% @promessage.errors.full_messages.each do |msg| %>
<p><%= msg %></p>
<% end %>
<%= f.input :email, label: 'email' %>
<%= f.input :body, label: 'text', as: :text, :input_html => { :cols => 50, :rows => 5 } %>
<%= f.submit "Send", :class => 'btn btn-primary' %>
<% end %>
views/promessage_mailer にテキストと HTML のテンプレートがあります
そして私のルートに追加しました:
resources :promessages, only: [:new, :create]
フォームを送信するたびに、コントローラーにエラーが表示され、フォームが検証されません。私は何が欠けていますか?