未初始化的常量ContactsController :: ContactMailer

时间:2014-03-05 20:39:49

标签: ruby-on-rails activemodel

我正在尝试使用ActiveModel来创建联系我们表单。当我点击提交时,我会在uninitialized constant ContactsController::ContactMailer

行上收到名称错误ContactMailer.new_contact(@contact).deliver

有人能告诉我我做错了吗?

控制器:

class ContactsController < ApplicationController
  def new
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(params[:contact])
    if @contact.valid?
      ContactMailer.new_contact(@contact).deliver
      redirect_to root_path
    else
      render :new
    end
  end
end

型号:

class Contact
  include ActiveModel::Model

  attr_accessor :name, :email, :message

  validates :name, presence: true
  validates :email, presence: true
  validates :message, presence: true, length: { maximum: 300 }
end

形式:

<h1>Contact Us</h1>

<%= form_for @contact do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>

  <%= f.label :email %>
  <%= f.email_field :email %>

  <%= f.label :message %>
  <%= f.text_area :message %>

  <%= f.submit 'Submit' %>
<% end %>

2 个答案:

答案 0 :(得分:2)

根据我们的评论,您尚未实施ContactMailer。您可以在app/mailers/contact_mailer.rb

执行此操作

您可以在Rails文档中找到有关mailers的更多信息。

(听起来你已经知道如何实现邮件了,但你并不是唯一一个会读过这个答案的人。)

答案 1 :(得分:0)

我也遇到了同样的问题,因为contact_mailer.rb文件与我为该文件指定的类名不匹配。

我将班级contacts_mailer.rb的文件名从contact_mailer.rb重命名为ContactMailer