2012-01-06 31 views
5

Vì vậy, tôi đã kiểm tra tất cả các câu trả lời hiện có cho các câu hỏi tương tự ở đây trên stackoverflow và ở nơi khác, nhưng không thể nhận được gem gem_form làm việc như quảng cáo.Lỗi sử dụng đường ray Mail_form gem: "Uninitialized constant Mailform"

Đây là thiết lập: Tôi đang cố gắng tạo biểu mẫu chụp khách hàng tiềm năng đơn giản cho trang web của công ty tôi. Tôi muốn gửi email các dữ liệu được thu thập bởi các hình thức vào tài khoản email của tôi mà không có một cơ sở dữ liệu phụ trợ và tôi nghĩ đó là những gì mail_form sẽ làm cho dễ dàng.

Đây là mô hình của tôi, 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 

Và đây là bộ điều khiển của tôi, 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 

Và đây là quan điểm của tôi, 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 %> 

Tôi khá mới mẻ đối với đường ray và lập trình web nói chung, vì vậy nó có thể là tôi là m issing một cái gì đó thực sự cơ bản ở đây mà không được đề cập trong bất kỳ hướng dẫn trực tuyến. Tôi đã được tất cả các tài liệu mail_form và mọi hướng dẫn và câu trả lời tôi có thể tìm thấy và tôi vẫn nhận được lỗi.

Ồ vâng! Tôi cũng nhận được lỗi nếu tôi thử ContactForm.new trong giao diện điều khiển đường ray. Mọi sự trợ giúp sẽ rất được trân trọng!

Ồ vâng, Rails phiên bản 3.1.1

+0

Tệp mô hình của bạn phải được đặt tên là 'contact_form.rb', đó là quy ước đường ray. Bạn cũng đang đề cập đến một lỗi, bạn có thể thêm nó vào câu hỏi của mình không? –

Trả lời

4

bạn có một lỗi đánh máy trong định nghĩa lớp học của bạn

class ContactForm < Mailform::Base 

nên

class ContactForm < MailForm::Base 

cũng chắc chắn rằng bạn đã cài đặt mail_form thêm

gem "mail_form", ">= 1.3.0" 

để Gemfile của bạn và chạy bó cài đặt

3

Nếu bạn đang thử điều này lần đầu tiên từ bảng điều khiển, hãy chắc chắn khởi động lại bàn điều khiển đường ray của bạn sau khi cài đặt đá quý của bạn.

Các vấn đề liên quan