2017-07-31 127 views
0

我有一个简单的红宝石轨道窗体,与ajax发布。不过,我不断收到此错误:NameError(未初始化的常量Welcome4Controller :: EmailMe2Mailer):RAILS

NameError (uninitialized constant Welcome4Controller::EmailMe2Mailer):

app/controllers/welcome4_controller.rb:3:in `contact'

这是形式:

<%= form_for :contact, :remote => true, :method => :post, html: {:class => "form-stacked", id: 'contact_form' } do |f| %> 

<div class="col-md-6"> 
    <div class="input-group input-group-lg wow fadeInUp" data-wow-delay='0.8s'> 
     <span class="input-group-addon" id="sizing-addon1"> 
      <i class="fa fa-user" aria-hidden="true"></i> 
     </span> 
     <input type="text" class="form-control" aria-describedby='sizing-addon1' placeholder="Full Name" name="fullname" id="fullname" required> 
    </div> 

    <div class="input-group input-group-lg wow fadeInUp" data-wow-delay='1.2s'> 
     <span class="input-group-addon" id="sizing-addon1"> 
      <i class="fa fa-envelope" aria-hidden="true"></i> 
     </span> 
     <input class="form-control" aria-describedby='sizing-addon1' placeholder="Email Address" required name="email" id="email"> 
    </div> 

    <div class="input-group input-group-lg wow fadeInUp" data-wow-delay='1.6s'> 
     <span class="input-group-addon" id="sizing-addon1"> 
      <i class="fa fa-phone" aria-hidden="true"></i> 
     </span> 
     <input class="form-control" aria-describedby='sizing-addon1' placeholder="Phone Number (optional)" name="phone" id="phone"> 
    </div> 
</div> 

<div class="col-md-6"> 
    <div class="input-group wow fadeInUp" data-wow-delay='2s'> 
     <textarea class="form-control" cols="80" rows="6" name="message" placeholder="Type here..." style="width:100%" id="message" required></textarea> 
    </div> 
    <button class="btn btn-lg wow fadeInUp" data-wow-delay='2.4s' id="contact_btn"data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> Sending" >Send Your Message</button> 
</div> 

<% end %> 

这是控制器:

class Welcome4Controller < ApplicationController 
    def contact 
    EmailMe2Mailer.confirmation_2(params[:fullname,:email,:phone,:message]).deliver_now 

    render json: { success: true }, status: 200 
    end 

    def index 
    end 
end 

这是邮件:

class EmailMe2Mailer < ApplicationMailer 
    default from: "**@gmail.com" 

    def confirmation_2(fullname,email,phone,message) 
    @greeting = "Hi" 
    @fullname = fullname 
    @email = email 
    @phone = phone 
    @message = message 

    mail to: "**@gmail.com", subject: "contact email" 
    end 
end 

这是ajax调用:

$('#contact_form').submit(function(e) { 
    e.preventDefault(); 
    }).validate({ 
    rules: { 
     fullname: { 
     required: true, 

     }, 
     email: { 
     required: true, 
     email: true 
     }, 
     message: { 
     required: true, 
     minlength: 5 
     } 
    }, 
    submitHandler: function (form) { 

     var btn = $('#contact_btn'); 
     btn.button('loading'); 
     setTimeout(function() { 
     btn.button('reset'); 
     }, 8000); 

     $.ajax({ 
     type: 'POST', 
     url: '/contact', 
    // data: form.serialize(), 
    dataType: 'json', 
    async: true, 
    data: { 

     fullname: $('#fullname').val(), 
     email: $('#email').val(), 
     phone: $('#phone').val(), 
     message: $('#message').val() 
    }, 

    success: function (json) { 
     $('#contact').hide(); 
     $('#output').html(
     '<i class="fa fa-check" aria-hidden="true" id="check" style="border-radius:50%;font-size:80px;text-align:center;color:#E81B00"></i><br><p class="lead" style="font-size:40px;">We have received your message!</p>' 
     ).show(); 
    } 
    }); 
    return false; // for demo 
} 
}); 

它基本上是抱怨传递多个参数给寄件人这里:

EmailMe2Mailer.confirmation_2(params[:fullname,:email,:phone,:message]).deliver_now 

这是EmailMe2Mail位于:

app => mailers => email_me_2_mailer.rb 

这是application_mail.rb

class ApplicationMailer < ActionMailer::Base 
    default from: '**@gmail.com' 
    layout 'mailer' 
end 
+1

你能告诉你的应用程序结构,特别是在'EmailMe2Mailer'放置? – 31piy

+0

app =>邮件程序=> email_me_2_mailer.rb – Seio

+1

您是否在添加邮件程序后重新启动应用程序? – Sajin

回答

2

NameError (uninitialized constant Welcome4Controller::EmailMe2Mailer):

这是因为文件名称错误。它应该是email_me2_mailer.rb而您有它像email_me_2_mailer.rb更改为email_me2_mailer.rb应该解决您的问题。

通常Rails的预计,文件名是在snake_case关于类名CamelCase。您可以使用underscore检查snake_case字符串EmailMe2Mailer像下面

"EmailMe2Mailler".underscore 
=> "email_me2_mailler" 
相关问题