0

投稿されていないフォームに問題があり、ログには何も表示されません。問題がアクティブモデル、ファイル名の規則、またはルーティングに起因するかどうかはわかりません。メッセージは送信されません。

私のコントローラーはかなり基本的なもので、*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]

フォームを送信するたびに、コントローラーにエラーが表示され、フォームが検証されません。私は何が欠けていますか?

4

0 に答える 0