Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 项目中的命名错误#新增_Ruby On Rails - Fatal编程技术网

Ruby on rails 项目中的命名错误#新增

Ruby on rails 项目中的命名错误#新增,ruby-on-rails,Ruby On Rails,我正在遵循github中的alloy复杂表单示例,试图学习嵌套表单,但我无法让它正常工作。 项目中的命名错误#新增 显示app/views/projects/_form.html.erb,其中第13行出现: 你有一个零的对象,当你没有想到它! 您可能希望有ActiveRecord::Base的实例。 评估nil.new_记录时出错? 提取的源(第13行附近): 10: 11: 12: 13: 14: 15: 16: 模板包含跟踪:app

我正在遵循github中的alloy复杂表单示例,试图学习嵌套表单,但我无法让它正常工作。

项目中的命名错误#新增
显示app/views/projects/_form.html.erb,其中第13行出现:
你有一个零的对象,当你没有想到它!
您可能希望有ActiveRecord::Base的实例。
评估nil.new_记录时出错?
提取的源(第13行附近):
10:

11: 12: 13: 14: 15: 16: 模板包含跟踪:app/views/projects/new.html.erb 类注释5 有很多评论 有很多:标签 接受:标记的\u嵌套的\u属性,\u,:允许\u销毁=>:true, :如果=>proc{attrs}attrs.all{{k,v{v.blank?} 结束 类标记
有人有什么建议吗?我一整天都在尝试让嵌套表单工作,但没有成功

项目控制器

class ProjectsController < ApplicationController
  def index
    @projects = Project.find(:all)
  end

  def show
    @project = Project.find(params[:id])
  end

  def new
    @project = Project.new
    @project.tasks.build
    @project.tags.build
  end

  def create
    @project = Project.new(params[:project])
    if @project.save
      flash[:notice] = "Successfully created project."
      redirect_to @project
    else
      render :action => 'new'
    end
  end

  def edit
    @project = Project.find(params[:id])
    # add an extra new record for debugging purposes
    @project.tasks.build
    @project.tags.build
  end

  def update
    @project = Project.find(params[:id])
    @project.attributes = params[:project]
    if @project.save
      flash[:notice] = "Successfully updated project."
      redirect_to @project
    else
      render :action => 'edit'
    end
  end

  def destroy
    @project = Project.find(params[:id])
    @project.destroy
    flash[:notice] = "Successfully destroyed project."
    redirect_to projects_url
  end
end
class ProjectsController“新建”
结束
结束
定义编辑
@project=project.find(参数[:id])
#为调试目的添加额外的新记录
@project.tasks.build
@project.tags.build
结束
def更新
@project=project.find(参数[:id])
@project.attributes=params[:project]
如果@project.save
flash[:notice]=“已成功更新项目。”
将_重定向到@project
其他的
呈现:操作=>“编辑”
结束
结束
def销毁
@project=project.find(参数[:id])
@破坏计划
flash[:notice]=“已成功销毁项目。”
将\u重定向到项目\u url
结束
结束

您的作者表单需要一位作者。要么就在第13行之前构建它:

<% @project.build_author unless @project.author %>
<% project_form.fields_for :author do |author_form| %>
  <%= author_form.label :name, "Author name:" %>
  <%= author_form.text_field :name %>

顺便说一句,复杂表单示例的原始文件中有“@project.build\u author,除非@project.author”。您可能在编辑它们时删除了它。

您能告诉我们您的项目控制器中有什么吗?添加了项目控制器问题:我尝试添加@project.author.build,但没有成功。你为什么要在这个基础上使用.build\u author?是因为项目属于作者吗?@project.author.build调用项目作者的生成方法。因为您的项目没有作者,所以它尝试在nil上调用“build”。这不管用。ActiveRecord通过“属于”关系将build\u author方法添加到项目模型中。(请在此阅读:)
<% @project.build_author unless @project.author %>
<% project_form.fields_for :author do |author_form| %>
  <%= author_form.label :name, "Author name:" %>
  <%= author_form.text_field :name %>
def new
  @project = Project.new
  @project.tasks.build
  @project.tags.build

  @project.build_author unless @project.author
end