2012-01-06 23 views
5

Sprawdziłem więc wszystkie istniejące odpowiedzi na podobne pytania tutaj na stackoverflow i gdzie indziej, ale nie mogę uzyskać gemu mail_form, aby działał zgodnie z reklamą.Błąd przy użyciu rails Mail_form gem: "niezainicjowana stała Mailform"

Oto konfiguracja: próbuję utworzyć prosty formularz przechwytywania ołowiu dla witryny mojej firmy. Chcę wysłać dane zebrane przez formularz do mojego konta e-mail bez bazy danych i pomyślałem, że to, co mail_form byłoby łatwe.

Oto mój model, 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 

A oto mój kontroler, 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 

I tu jest moim zdaniem 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 %> 

jestem całkiem nowe dla szyn i programowania w ogóle, więc może być tak, że jestem m jest czymś naprawdę NAPRAWDĘ podstawowym, o czym nie wspominają żadne tutoriale online. Przeglądałem całą dokumentację mail_form i każdy samouczek oraz odpowiedź, którą mogę znaleźć, wciąż dostaję błąd.

O tak! Też dostaję błąd, jeśli próbuję ContactForm.new w konsoli rails. Każda pomoc będzie bardzo ceniona!

Aha, Szyny wersję 3.1.1

+0

Twój model powinien mieć nazwę 'contact_form.rb', czyli konwencję rails. Wspomniałeś również o błędzie, czy mógłbyś dodać go do swojego pytania? –

Odpowiedz

4

masz literówkę w definicji klasy

class ContactForm < Mailform::Base 

powinny być

class ContactForm < MailForm::Base 

również upewnić zainstalowany mail_form dodany

gem "mail_form", ">= 1.3.0" 

do Gemfile i instalacja pakietu

3

Jeśli próbujesz tego po raz pierwszy z konsoli, pamiętaj, aby zrestartować konsolę po zainstalowaniu gem.

Powiązane problemy