0

我今天第一次尝试将 Ancestry gem作为内容管理系统的一部分,并希望能够创建节点并将它们手动连接到树中。换句话说,上下文并不规定任何新节点的父节点是什么,这与每个人都阅读过的许多线程讨论示例不同。

目前,当我尝试保存(创建或更新)具有不存在的 parent_id(“4”)的节点时,我收到错误:

ActiveRecord::RecordNotFound in TreesController#update
Couldn't find Tree with 'id'=4

我希望将引用不存在的父母的任何节点分配为没有父母。我怎么做?

这是trees_controller.rb的相关部分:

  def create
    @tree = Tree.new(tree_params)
    if @tree.save
        redirect_to trees_url, notice: "Tree was successfully created"
    else
        render :new
    end     
  end

  ...

  private

  def tree_params
    params.require(:tree).permit(:name, :value, :note, :parent_id)
  end

谢谢

4

1 回答 1

0

经过一周的研究,我设法把它整理好了。对于那些遇到同样障碍的人,这里是解决方案:

  def create
    parent_exists = Tree.exists?(params[:tree][:parent_id])
    if !parent_exists
        params[:tree][:parent_id] = nil
        note = "Parent node didn't exist so set to nil."
    end
    @tree = Tree.new(tree_params)
    if @tree.save
        redirect_to trees_url, notice: "Node was successfully created. " + note.to_s
    else
        render :new, notice: "There was an error saving this node. Please try again."
    end
  end
于 2014-10-04T08:54:16.560 回答