允许用户使用联系表单将电子邮件发送到模型中存储的电子邮件地址

时间:2014-01-02 15:34:31

标签: ruby-on-rails ruby email contact-form

我有一个目录网站。每个“目录”都是一个列表。每个列表模型都有一个电子邮件属性

如何让我的用户向“列表所有者”发送电子邮件?

到目前为止,我的想法是使用ContactForm Gem并在我的Listing模型中添加:email属性。然后使用ContactForm Gem并在每个显示页面中放置一个表单。但是我的方法不起作用。关于如何让ContactForm模型接受@ listing.email属性的任何想法?

如果不是这样做的另一种方法是什么? 感谢您的帮助!

我的控制器如下所示:

控制器:

class ContactFormsController < ApplicationController

 def new
  @listing = Listing.params[:id]
  @contact_form = ContactForm.new
 end

def create
  begin @contact_form = ContactForm.new(params[:contact_form]) 
    @contact_form.request = request 
      if @contact_form.deliver
          flash.now[:notice] = 'Thank you for your interest!'
          redirect_to root_path
        else
          render :new
        end
      rescue ScriptError
        flash[:error] = 'Sorry, something was wrong'
      end
   end
end

型号:

class ContactForm < MailForm::Base
attribute :name,      :validate => true
attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :file,      :attachment => true

attribute :message
attribute :nickname,  :captcha  => true

# Declare the e-mail headers. It accepts anything the mail method
# in ActionMailer accepts.
def headers
{
  :subject => "My Contact Form",
  :to => "#{@listing.email}",
  :from => %("#{name}" <#{email}>)
}
end
end

0 个答案:

没有答案