diff options
| author | realtradam <[email protected]> | 2020-12-02 23:55:40 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2020-12-02 23:55:40 -0500 |
| commit | e6d86fe2b907b6be57bab88396ab8b27fa95d580 (patch) | |
| tree | 4206ca2919060dc9badb448641f3fe1a59ce6963 /app/controllers/nodes_controller.rb | |
| parent | d13b636bd654244f894943c2968a7386e8379605 (diff) | |
| download | rails-tree-style-activerecord-e6d86fe2b907b6be57bab88396ab8b27fa95d580.tar.gz rails-tree-style-activerecord-e6d86fe2b907b6be57bab88396ab8b27fa95d580.zip | |
known bugs fixed
Diffstat (limited to 'app/controllers/nodes_controller.rb')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index f603f52..826be55 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -12,8 +12,12 @@ class NodesController < ApplicationController @node = Node.new @nodes = Node.all end + def edit + @node = Node.find(params[:id]) + @nodes = Node.all + end def create - unless params[:node][:parent].to_i == 0 + unless params[:node][:parent] == "" @parent = Node.find(params[:node][:parent]) @node = @parent.children.build(title: params[:node][:title], content: params[:node][:content], parent: @parent) else @@ -21,13 +25,38 @@ class NodesController < ApplicationController @node = Node.new(params.require(:node).permit(:parent,:title,:content)) end - @node.save redirect_to @node end + def update + @node = Node.find(params[:id]) + unless params[:node][:parent] == "" #if user doesnt want to not have parent + unless params[:id] == params[:node][:parent] # if the user didnt select a child to be its own parent(error handling) + @parent = Node.find(params[:node][:parent]) + if @node.update(title: params[:node][:title], content: params[:node][:content], parent: @parent) + @parent.children << @node # assign new parent + redirect_to @node + else + @nodes = Node.all #makes dropdown work in render + render 'edit' + end + else + @nodes = Node.all #makes dropdown work in render + render 'edit' + end + else # save node without parent + if @node.update(title: params[:node][:title], content: params[:node][:content], parent: nil) + redirect_to @node + else + @nodes = Node.all # makes dropdown work in render + render 'edit' + end + end + end + private def node_params - + end end |
