Project的未定义方法`model_name':Class

时间:2012-05-30 20:25:27

标签: ruby-on-rails ruby

我已经查看了所有相关问题,但对我来说没什么新鲜的。

我有一个带有“新”动作的项目控制器

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

Project是一个简单的类,不是活动记录:

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

我收到错误“未定义的方法`model_name'为Project:Class”

这是一个erb文件样本:

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

4 个答案:

答案 0 :(得分:31)

如果Project不是活动记录子类,则需要使用这些子类,并且可以使用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 %>

答案 1 :(得分:3)

class Project < ActiveRecord::Base

答案 2 :(得分:3)

仅供记录 - 这是该问题的Railscast:

http://railscasts.com/episodes/219-active-model

答案 3 :(得分:0)

我遇到了类似的问题,因为我的班级没有使用 ActiveRecord;将以下内容添加到我的课程中解决了它:include ActiveModel::Model