2014-09-28 2 views
0

저는 콘텐트 관리 시스템의 일부로 처음으로 the Ancestry gem을 시도하고 있습니다. 노드를 만들고이를 수동으로 트리에 결합 할 수 있기를 원합니다. 즉, 모든 노드가 읽은 많은 스레드 토론 예제와 달리 컨텍스트가 새로운 노드의 부모를 지정하지 않습니다.Rails Ancestry gem : 노드를 저장할 때 부모 노드가 존재하는지 확인

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

내가 갖고 싶어 :

내가 저장하려고하면 (생성 또는 업데이트) 순간

("4") 존재하지 않는 PARENT_ID와 노드, 나는 오류 존재하지 않는 부모를 가리키는 모든 노드는 부모가없는 것으로 지정됩니다. 어떻게해야합니까?

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 

감사합니다 나는 그것을 정렬 얻기 위해 관리 연구의 주 후

답변

0

:

여기 trees_controller.rb의 관련 부분이다. 동일한 장애물을 쳤던 사람들을위한 해결책은 다음과 같습니다.

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