Ошибка использования rails Mail_form gem: «неинициализированная константа Mailform» - PullRequest
5 голосов
/ 06 января 2012

Итак, я проверил все существующие ответы на подобные вопросы здесь в stackoverflow и в других местах, но не могу заставить гем mail_form работать так, как рекламируется.

Вот настройка: я пытаюсь создатьпростая форма захвата потенциальных клиентов для сайта моей компании.Я хочу отправить данные, собранные с помощью формы, на мою учетную запись электронной почты без базы данных, и я подумал, что это облегчает mail_form.

Вот моя модель, 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 => "jonthewineguy@gmail.com",
      :from => %("#{name}" <#{email}>)
    }
  end
end

А вот и мой контроллер, 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

А вот мой взгляд, 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 %>

Я довольно новичок в рельсах и веб-программировании вВ общем, вполне может быть, что я упускаю что-то действительно базовое здесь, что не упоминается ни в одном онлайн-учебнике.Я изучил всю документацию mail_form и все учебники и ответы, которые смог найти, и я все еще получаю сообщение об ошибке.

О, да!Я также получаю сообщение об ошибке, если я пытаюсь связаться с ContactForm.new в консоли rails.Любая помощь будет принята с благодарностью!

О, да, версия Rails 3.1.1

Ответы [ 2 ]

4 голосов
/ 06 января 2012

у вас есть опечатка в вашем определении класса

class ContactForm < Mailform::Base  

должно быть

class ContactForm < MailForm::Base

также убедитесь, что вы установили mail_form, добавленный

gem "mail_form", ">= 1.3.0"

в ваш Gemfileи запустите пакетную установку

3 голосов
/ 11 октября 2013

Если вы пытаетесь сделать это впервые с консоли, обязательно перезапустите консоль rails после установки вашего гема.

...