对于(类)mail_form gem,未定义的方法为true

时间:2015-12-23 08:53:45

标签: ruby-on-rails controller gem

我在Ruby on Rails编程方面比较新,我在尝试使用mail_form gem时遇到了这个错误。 The error is in the create function as can be seen

我想我的设置方法正确无误:

我的模型是这样的:

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

    def headers
    {
      :subject => "Contact Form",
      :to => "(my email)",
      :from => %("#{name}" <#{email}>)
    }
   end
end

我不知道我是否想要创建一个只有一个页面的网站,所以我有一个表单在页面控制器的welcome.html.erb中创建一个新的联系人,但我正在定义联系方式:

def welcome
   @admin = Admin.find(1)
   @projects = Project.all.order('created_at DESC')
   @contact = Contact.new
end

另外我认为重要的是,创建函数(抛出错误)是在联系人控制器中,我不知道是否可以,或者它会在与Contact.new相同的控制器上更好(在页面的欢迎功能中):

def create
    @contact = Contact.new(params[:contact])
    @contact.request = request
    if @contact.deliver
      redirect_to(root_path, :notice => "Thank you for contacting me. I will reply shortly!")
    else
      flash.now[:error] = 'Cannot send message.'
    end
end

我尚未在生产中进行过测试,只是在开发中可能这不会在生产中发生,但我想知道为什么会发生这种情况,因为我正在关注Mackenzie Child tutorial没有发生在他身上,我们有相同的代码(除了我试图在一个视图中做到这一点的事实)。我不知道它是否有帮助,但这就是我在config / environments / development.rb中所拥有的:

config.action_mailer.delivery_method = :letter_opener

所以在开发中我使用gem letter_opener来显示消息而不是发送邮件,虽然这不会影响错误,因为错误在我安装gem之前就出现了。

我已经在许多地方和所有关于堆栈溢出的问题进行了搜索,但我一无所获。如果你可以帮助我,那将是不可能的。

感谢。

修改 我已经使用heroku在生产中测试过并返回相同的错误:(

1 个答案:

答案 0 :(得分:0)

确定, 我在gem的github页面中问过,我可以解决这个问题。就是在验证Contact模型中的属性时,我将:true声明为一个对象,因为它必须只是一个布尔true(之前没有冒号)。很高兴知道避免愚蠢的错误。