我正在尝试使用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 %>
答案 0 :(得分:2)
根据我们的评论,您尚未实施ContactMailer
。您可以在app/mailers/contact_mailer.rb
。
您可以在Rails文档中找到有关mailers的更多信息。
(听起来你已经知道如何实现邮件了,但你并不是唯一一个会读过这个答案的人。)
答案 1 :(得分:0)
我也遇到了同样的问题,因为contact_mailer.rb
文件与我为该文件指定的类名不匹配。
我将班级contacts_mailer.rb
的文件名从contact_mailer.rb
重命名为ContactMailer