当我访问我的一个控制器的“新”操作时,我收到了可怕的错误:“NilClass:Class 的未定义方法 `model_name'”。当我访问 /works/new 时发生错误。一个用户 has_many 作品。这是 Works 控制器:
class WorksController < ApplicationController
def index
@works = Work.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @works }
end
def create
@work = current_user.works.build(params[:works])
if @work.save
redirect_to root_url
else
render 'home'
end
end
def new
@work = Work.new
end
def destroy
@work.destroy
redirect_to root_url
end
end
def show
@work = Work.find(params[:id])
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @work }
end
end
end
在 new.html.erb 视图文件中,我使用以下循环创建表单,以便提交填写的字段将为用户创建新的工作记录:
<%= form_for(@work) do |f| %>
我有一种感觉,这是错误的根源,因为我没有告诉 Rails 创建新的 Work 时要考虑到用户关系。我是否正确假设这是问题所在?如果是这样,我该如何解决上述循环?