我使用本教程创建了一个联系表单。 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_params中的列添加到数据库中。
由于
答案 0 :(得分:2)
mail-form不提供“创建”方法 如果可能,请根据给定更改模型!
class User < ActiveRecord::Base
include MailForm::Delivery
end
邮件形式也可以与activerecord很好地配合使用。