2013-02-13 4 views
4

У меня есть следующие модели:Rails неопределенный метод «model_name»

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 –

ответ

11

Помимо правильного маршрута в вашей конфигурации/routes.rb, вам также нужны эти две инструкции по Ваша модель:

include ActiveModel::Conversion 
extend ActiveModel::Naming 

Взгляните на этот вопрос: form_for without ActiveRecord, form action not updating.

Для route части этого ответа, вы можете добавить к вашей конфигурации/routes.rb:

resources :contacts, only: 'create' 

Это будет генерировать де следующий маршрут:

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

Затем вы можете использовать это action (контакты # create) для обработки представления формы.

+0

Мне не хватало две приведенные вами инструкции. Благодаря! – dennismonsewicz

0

маршрут, вероятно, не идти туда, где вы думаете, что происходит, и поэтому, вероятно, @ Контакт Nill

пробега «реки маршруты» и проверить новый путь .. если вы используете по умолчанию, маршрут

new_contact_path .. и эрб должен быть в файле: приложение/просмотров/контакты/new.html.erb

 
    def new 
    @contact = Contact.new 
    end 

Смежные вопросы