我已经查看了所有相关问题,但对我来说没什么新鲜的。
我有一个带有“新”动作的项目控制器
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 %>
答案 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:
答案 3 :(得分:0)
我遇到了类似的问题,因为我的班级没有使用 ActiveRecord;将以下内容添加到我的课程中解决了它:include ActiveModel::Model