Mailer的未定义方法`model_name' - Rails 5

时间:2016-10-26 19:13:43

标签: ruby-on-rails-5

我正在尝试使用内置邮件功能在Rials 5中与我联系。 我把它放在一起就像一个普通的控制器和用Mailer作为模型的视图。但当我把它全部写出来时,我得到了错误:

  

#ContactMailer

的未定义方法`model_name'

联系人是梅勒的名字。 当我尝试查看运行rails服务器的new.html.erb页面时出现错误。它看起来像这样: Screen Shot

以下是我正在使用的代码:

contacts_controller.rb

class ContactsController < ApplicationController

def new
    @contact = ContactMailer.new
end

def create
    @contact = ContactMailer.new(params[:name, :email, :message]) 
    if @contact.deliver
        flash[:success] = "Your message has been sent." 
    else
        flash[:error] = "There was a problem sending your message."
        render 'new'
    end
end

new.html.erb

<%= form_for @contact do |f| %>

        <div class="form-group">
            <%= f.label :name %>
            <%= f.text_field :name, class: 'form-control' %>
        </div>

        <div class="form-group">
            <%= f.label :email %>
          <%= f.email_field :email, class: 'form-control', required: true %></div>

        <div class="form-group">
            <%= f.label :message %>
            <%= f.text_area :message, class: 'form-control' %>
        </div>

            <%= f.submit "Send", class: 'btn btn-default' %> 

    <% end %>

还有生成的Mailer和视图,但我没有改变任何内容。

从我能够研究的错误可能是我没有初始化@contact变量,但我相信我有。而现在我迷失了。任何帮助,将不胜感激。

作为补充信息: 我的计划是使用此联系表单在Heroku上使用发送网格发送电子邮件。

1 个答案:

答案 0 :(得分:0)

您正在尝试构建邮件程序。但不是如何使用它们。他们不是模特。

相反,你会做类似的事情:

 ContactMailer.some_method_you_added_to_your_mailer(params[:name, :email, :message]).deliver_now

你不使用新的。

建议您阅读http://guides.rubyonrails.org/action_mailer_basics.html