Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创建子记录:未定义的方法“model#u name';班级:班级_Ruby On Rails_Class_Methods_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 创建子记录:未定义的方法“model#u name';班级:班级

Ruby on rails 创建子记录:未定义的方法“model#u name';班级:班级,ruby-on-rails,class,methods,ruby-on-rails-3.2,Ruby On Rails,Class,Methods,Ruby On Rails 3.2,当我访问一个控制器的“new”操作时,我得到了一个可怕的错误:“NilClass:Class的未定义方法`model_name'。当我访问/works/new时出错。一个用户有很多作品。以下是工程控制员: class WorksController < ApplicationController def index @works = Work.all respond_to do |format| format.html # index.html.erb format

当我访问一个控制器的“new”操作时,我得到了一个可怕的错误:“NilClass:Class的未定义方法`model_name'。当我访问/works/new时出错。一个用户有很多作品。以下是工程控制员:

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
class WorksController@works}
结束
def创建
@work=当前用户.works.build(参数[:works])
如果@work.save
将\u重定向到根\u url
其他的
渲染“home”
结束
结束
def新
@工作=工作
结束
def销毁
@工作,毁灭
将\u重定向到根\u url
结束
结束
def秀
@work=work.find(参数[:id])
@user=user.find(参数[:id])
回应待办事项|格式|
format.html#show.html.erb
format.xml{render:xml=>@work}
结束
结束
结束
在new.html.erb视图文件中,我使用以下循环创建表单,以便提交填写的字段将为用户创建新的工作记录:

 <%= form_for(@work) do |f| %>


我觉得这是错误的根源,因为我没有告诉Rails在创建新作品时考虑到用户关系。我认为这就是问题所在,对吗?如果是这样,我如何修复上述循环?

我建议更改新方法,使其将工作对象的范围限定为当前用户。但我不确定这是你的问题

def new
  @work = current_user.works.new
end
更新:


看起来您的方法定义在控制器中出错了<代码>创建、
新建
销毁
实际上是在您的
索引
方法中定义的。您需要将
show
方法正上方的
end
移动到
create
方法正上方。

您说您正在使用“以下循环”,但我没有看到循环。你是忘了粘贴一些代码,还是只是指“块”?很抱歉,你是对的。我本来想打“block”的!谢谢你的回复!这是一个好主意,但不幸的是我仍然得到了错误。不过,我确信这样做可以避免将来的bug!stacktrace是否显示该行是导致问题的行?stacktrace显示视图中的这行是导致错误的行:刚刚发布了对我的问题的更新,看起来像是语法问题。