2012-05-30 13 views
13

Ho esaminato tutte le domande correlate, ma non c'è nulla di nuovo per me qui.metodo non definito `nome_modello 'per Progetto: Classe

Ho un regolatore di progetto con l'azione "nuovo"

class ProjectsController < ApplicationController 
    def new 
    @newproject = Project.new 
    end 
end 

Project è una semplice classe, non record attivo:

class Project 
    attr_accessor :name, :description 
    def initialize 
    @name = "" 
    @description = "" 
    end 
end 

ottengo l'errore "metodo non definito` model_name' per il progetto : Class"

si tratta di un campione di file erb:

<%= form_tag(@newproject) do |f| %> 
    <%= f.label :name %>: 
    <%= f.text_field :description %><br /> 
<% end %> 

risposta

29

se Project non è un record sottoclasse attiva, avete bisogno di questi e si può utilizzare form_for

class Project 
    extend ActiveModel::Naming 
    include ActiveModel::Conversion 
    def persisted? 
    false 
    end 
    ... 
end 

vista:

<%= form_for(@newproject) do |f| %> 
    <%= f.label :name %>: 
    <%= f.text_field :description %><br /> 
<% end %> 
+0

Viktor, grazie mille! Mi ha aiutato. Ho solo bloccato su questo. Forse, questo non è il modo migliore per creare un'istanza temporanea da distribuire, in modo che l'utente possa creare un vero progetto discografico attivo. – Dmitry

+0

Infatti, se mai persisterai in Project, non usarlo, usa la classe Project

+0

Grazie, un grande aiuto. @ ViktorTrón qualsiasi suggerimento su come acquisire familiarità con la conoscenza di Rails per estendere la possibilità di eseguire il debug di questo problema? –

3
class Project < ActiveRecord::Base 
+0

In questo caso ottengo "Impossibile trovare i progetti" tabella "" – Dmitry

+0

Voglio solo creare un'istanza di progetto temporanea in modo che un utente sul lato client possa modificare i nuovi parametri per creare un'istanza di progetto valida sul lato server – Dmitry

+1

oh in tal caso, solo utilizzare il nuovo oggetto della classe persistente ActiveRecord nel modulo. È temporaneo, dal momento che non lo salvi. Se la tua classe non è mai persistita, vedi la mia risposta. –

Problemi correlati