【发布时间】:2019-10-26 15:55:06
【问题描述】:
我有一个简单的联系表单,它接受以下字段(都应该是必需的):姓名、电子邮件、电话和消息。
我还想验证电子邮件地址。
应向用户提供有关表单提交是否成功或是否有错误的响应。
如果是,请在视图上显示特定错误。
此表单未连接到任何数据库模型。我不保存提交。只能邮寄。
我的 PagesController 中有一个 POST 路由设置为 contact_form
在我的 PagesController 我有
def contact_form
UserMailer.contact_form(contact_form_params).deliver
end
在我的 UserMailer 类中,我有:
def contact_form(params)
@formParams = params;
@date = Time.now
mail(
to: "support@example.com",
subject: 'New Contact Form Submission',
from: @formParams[:email],
reply_to: @formParams[:email],
)
end
这封邮件成功,但没有验证。如果验证通过,我只需要运行邮件块。然后向用户返回响应。
由于我没有模型,我不知道该怎么做。我看到的所有答案都告诉人们在 ActiveRecord 模型上使用validates。
只有几个答案:
(注意我已经更新了我的参数)
class UserMailerForm
include ActiveModel::Validations
def initialize(options)
options.each_pair{|k,v|
self.send(:"#{k}=", v) if respond_to?(:"#{k}=")
}
end
attr_accessor :first_name, :last_name, :email, :phone, :message
validates :first_name, :last_name, :email, :phone, :message, presence: true
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }
end
def contact_form
@form = UserMailerForm.new(contact_form_params)
if @form.valid?
UserMailer.contact_form(contact_form_params).deliver
else
logger.debug('invalid')
logger.debug(@form.valid?)
end
end
这会在有效时发送邮件。但是,我仍然不确定是否要向用户发送信息
【问题讨论】:
标签: ruby-on-rails