2012-01-06 7 views
5

Quindi, ho controllato tutte le risposte esistenti a domande simili qui su StackOverflow e altrove, ma non riesco a far funzionare la gemma mail_form come pubblicizzato.Errore nell'uso delle rotaie gemma Mail_form: "costante non inizializzato Mailform"

Ecco la configurazione: sto cercando di creare un semplice modulo di acquisizione lead per il sito Web della mia azienda. Desidero inviare per e-mail i dati raccolti dal modulo al mio account di posta elettronica senza un back-end del database e ho pensato che fosse ciò che renderebbe facile la posta elettronica.

Ecco il mio modello, 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 

Ed ecco il mio controller, 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 

E qui è la mia opinione, 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 %> 

Sono piuttosto nuovo per rotaie e programmazione web in generale, quindi potrebbe essere che io sono m pubblicare qualcosa di REALMENTE di base qui che non è menzionato in nessun tutorial online. Ho letto tutta la documentazione di mail_form e ogni tutorial e risposta che riesco a trovare e sto ancora ricevendo l'errore.

Oh sì! Ottengo anche l'errore se provo ContactForm.new nella console di rails. Qualsiasi aiuto sarebbe molto apprezzato!

Oh sì, Rails versione 3.1.1

+0

Il file del modello deve essere denominato 'contact_form.rb', ovvero la convenzione di rotaie. Stai anche citando un errore, potresti aggiungerlo alla tua domanda? –

risposta

4

si dispone di un errore di battitura nella definizione della classe

class ContactForm < Mailform::Base 

dovrebbe essere

class ContactForm < MailForm::Base 

anche assicurarsi installato mail_form aggiunto

gem "mail_form", ">= 1.3.0" 

al tuo Gemfile ed esegui l'installazione di bundle

3

Se provi questo per la prima volta dalla console, assicurati di riavviare la console di rotaie dopo aver installato il tuo gioiello.

Problemi correlati