2012-01-06 14 views
5

Por lo tanto, he comprobado todas las respuestas existentes a preguntas similares aquí en stackoverflow y en otros lugares, pero no puedo conseguir que la gema mail_form funcione según lo anunciado.Error al utilizar los rieles Mail_form gem: "forma de correo constante no inicializada"

Aquí está la configuración: estoy tratando de crear un formulario simple de captura de leads para el sitio web de mi compañía. Deseo enviar por correo electrónico los datos recopilados mediante el formulario a mi cuenta de correo electrónico sin un back-end de base de datos y pensé que eso es lo que mail_form facilitaría.

Aquí es mi modelo, ContactForm.rb:

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

    def persisted? 
    false 
    end 

    def headers 
    { 
     :subject => "New Lead", 
     :to => "[email protected]", 
     :from => %("#{name}" <#{email}>) 
    } 
    end 
end 

Y aquí está mi controlador, contact_forms_controller.rb:

class ContactFormsController < ApplicationController 
    def new 
    @contact_form = ContactForm.new 
    end 

    def create 
    begin 
     @contact_form = ContactForm.new(params[:contact_form]) 
     @contact_form.request = request 
     if @contact_form.deliver 
     flash.now[:notice] = 'Thank you for your interest!' 
     redirect_to root_path 
     else 
     render :new 
     end 
    rescue ScriptError 
     flash[:error] = 'Sorry, something was wrong' 
    end 
    end 
end 

Y aquí es mi punto de vista, contact_forms/new.html.erb:

<%= form_for @contact_form do |f| %> 
<div class="field"> 
    <%= f.label :name %> 
    <%= f.text_field :name, :required => true %>(required)<br /><br><br> 
</div> 
<div class="field"> 
    <%= f.label :email %> 
    <%= f.email_field :email, :required => true %>(required) 
    <br /><br><br> 
</div> 
    <div class="field"> 
    <%= f.label :phone %> 
    <%= f.phone_field :phone %><br /><br><br> 
</div> 
    <div class="field"> 
    How did you hear about us?:<br /> <%= f.text_field :referral 
    %><br /><br><br> 
</div> 
    <div class="field"> 
    Comments (What types of wine are you 
    interested in?):<br/<%= f.text_area :message %><br /><br><br> 
</div> 
<div class="field"> 
    Submit: <%= f.submit "Create" %> 
</div> 

<% end %> 

estoy bastante nuevo en los rieles y la programación web en general, así que bien podría ser que yo soy m emitiendo algo REALMENTE básico aquí que no se menciona en ningún tutorial en línea. He recorrido toda la documentación de mail_form y cada tutorial y respuesta que puedo encontrar y sigo recibiendo el error.

¡Oh sí! También recibo el error si pruebo ContactForm.new en la consola de rails. ¡Cualquier ayuda sería muy apreciada!

Oh, sí, la versión 3.1.1 Carriles

+0

Su archivo de modelo debe llamarse 'contact_form.rb', esa es la convención de los rieles. También menciona un error, ¿podría agregarlo a su pregunta? –

Respuesta

4

usted tiene un error tipográfico en su definición de clase

class ContactForm < Mailform::Base 

debería ser

class ContactForm < MailForm::Base 

También asegúrese de haber instalado mail_form añadió

gem "mail_form", ">= 1.3.0" 

en su Gemfile y ejecute la instalación del paquete

3

Si está intentando hacer esto por primera vez desde la consola, asegúrese de reiniciar la consola de los raíles después de instalar su gema.

Cuestiones relacionadas