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