14

我已经浏览了所有相关问题,但这里对我来说没有什么新鲜事。

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

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

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

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

我收到错误“项目:类的未定义方法`model_name'”

这是一个 erb 文件示例:

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

4 回答 4

33

如果 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 %>
于 2012-05-30T21:16:38.507 回答
3
class Project < ActiveRecord::Base
于 2012-05-30T20:29:48.627 回答
3

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

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

于 2013-01-09T23:26:10.603 回答
0

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

于 2021-02-17T14:08:51.633 回答