summaryrefslogtreecommitdiffhomepage
path: root/app/controllers/nodes_controller.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2020-12-02 23:55:40 -0500
committerrealtradam <[email protected]>2020-12-02 23:55:40 -0500
commite6d86fe2b907b6be57bab88396ab8b27fa95d580 (patch)
tree4206ca2919060dc9badb448641f3fe1a59ce6963 /app/controllers/nodes_controller.rb
parentd13b636bd654244f894943c2968a7386e8379605 (diff)
downloadrails-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.rb35
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