2013-02-13 26 views
4

我有以下型號:Rails的未定義的方法「模型名稱」

class Contact 
    attr_accessor :name, :emails, :message 

    def initialize(attrs = {}) 
    attrs.each do |k, v| 
     self.send "#{k}=", v 
    end 
    end 

    def persisted? 
    false 
    end 
end 

我打電話給一個接觸的形式在我看來,像這樣:

<div class="email_form"> 
    <%= render 'form' %> 
</div> 

這裏是控制器:

class ShareController < ApplicationController 
    layout "marketing_2013" 
    respond_to :html, :js 

    def index 
    @contact = Contact.new 
    end 
end 

這裏是表格:

<%= form_for(@contact) do |f| %> 
    <%= f.label :name, "Your Name" %> 
    <%= f.text_field :name %> 
    <%= f.label :text, "Send to (separate emails with a comma)" %> 
    <%= f.text_field :emails %> 
    <%= f.label :message, "Email Text" %> 
    <%= f.text_area :message %> 
    <%= f.submit %> 
<% end %> 

出於某種原因,我不斷收到此錯誤: undefined method model_name for Contact:Class

任何原因,我有什麼目前是行不通的?

+1

這已經在http://stackoverflow.com/questions/10823736/undefined-method-model-name-for-projectclass – 2013-02-13 19:50:38

回答

11

除了在你的config/routes.rb中正確的路線,你還需要這些兩條指令您的型號:

include ActiveModel::Conversion 
extend ActiveModel::Naming 

看看這個問題:form_for without ActiveRecord, form action not updating

對於這些答案的route部分,你可以添加到您的config/routes.rb文件:

resources :contacts, only: 'create' 

這將產生解下列路線:

contacts POST /contacts(.:format) contacts#create 

然後你就可以使用這個action(contacts#create)來處理表單提交。

+0

回答我錯過了你列出的兩個說明。謝謝! – dennismonsewicz 2013-02-13 20:24:22

0

您的路線可能不會去的地方,你認爲它會因此@contact可能是nill

運行「耙路線」,並檢查新的路徑。如果您正在使用默認設置,路線

new_contact_path ..和再培訓局應在文件中:應用程序/視圖/聯繫人/ new.html.erb

 
    def new 
    @contact = Contact.new 
    end 

相關問題