diff options
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 |
