2012-05-30 12 views
13

私はすべての関連する質問を見てきましたが、ここで私にとって新しいことはありません。プロジェクトのための未定義のメソッド `model_name ':クラス

私は「新しい」アクションを使用したプロジェクト・コントローラは

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

プロジェクトは単純なクラス、アクティブでない記録である持っている:私はプロジェクトのエラー「未定義のメソッド `MODEL_NAME」を取得

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

:クラス」

これはERBファイルのサンプルです:

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

答えて

29

プロジェクトがアクティブレコードのサブクラスではない場合、あなたはこれらを必要とし、使用することができますform_for

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

ビュー:

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

Viktor、ありがとう!それは私を助けた。私はちょうどこれに固執した。おそらく、これは一時的なインスタンスを作成して提供する最良の方法ではないので、ユーザーは実際のアクティブなレコードプロジェクトを作成できます。 – Dmitry

+0

実際、Projectを永続化する場合は、これを使用しないでください。クラスProject

+0

ありがとう、大きな助け。@ViktorTrónどのようにしてこの問題をデバッグできる程度にRailsを知っていることに慣れ親しんでいる? –

3
class Project < ActiveRecord::Base 
+0

私は "テーブル 'プロジェクト'を見つけることができませんでした" – Dmitry

+0

私はちょうどクライアント側のユーザーがサーバー側で有効なプロジェクトインスタンスを作成するために新しいパラメータを編集できるように、tempプロジェクトのインスタンスを作成したい場合は – Dmitry

+1

ああActiveRecord永続クラスの新しいオブジェクトをフォーム内で使用します。あなたはそれを保存しないので一時的です。クラスが永続化されない場合は、私の回答を参照してください。 –

関連する問題