从联系表格(铁路)保存数据

时间:2015-01-20 15:55:09

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

我使用本教程创建了一个联系表单。 https://rubyonrailshelp.wordpress.com/2014/01/08/rails-4-simple-form-and-mail-form-to-make-contact-form/

它与邮件程序完美配合。然而,该教程使您的模型(在我的情况下为'Share'模型)继承如下:

class Share < MailForm::Base

而不是正常的ActiveRecord :: Base

我猜是因为这个原因,当我尝试用

保存数据时
@article_save = Share.create(share_params)

我正在为类获取'undefined create'方法。我的模型看起来像这样:

class Share < MailForm::Base

attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :user_email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :title
attribute :message
attribute :source
attribute :url

#Declare the e-mail headers. It accepts anything the mail method
#in ActionMailer accepts.
def headers
{
  :subject => "Article shared via email",
  :to => "my@email.com",
  :from => %(<#{email}>)
}
end

和我的控制器一样:

class SharesController < ApplicationController

def new
    @article = Share.new
end

def create
    @article = Share.new(params[:share])
    @article.request = request
    UserMailGenerator.new(nil).share_article(@article).deliver
    if @article.save
        redirect_to(:back)
    else
        render :new
    end
end


private

def share_params
  params.require(:share).permit(:email, :user_email, :url)
end

end

保持此配置并保存数据的最佳方式是什么?我已经完成了迁移,将shared_pa​​rams中的列添加到数据库中。

由于

1 个答案:

答案 0 :(得分:2)

mail-form不提供“创建”方法 如果可能,请根据给定更改模型!

class User < ActiveRecord::Base
  include MailForm::Delivery

end

邮件形式也可以与activerecord很好地配合使用。

Reference