未初始化的常量联系人控制器::联系人邮件



我正在尝试使用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 %>

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

您可以在 Rails 文档中找到有关邮件程序的更多信息。

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

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

我将我的文件名重命名为我的类ContactMailer,即从 contacts_mailer.rb 重命名为 contact_mailer.rb

最新更新