diff options
| author | hukl <contact@smyck.org> | 2009-09-10 12:00:03 +0200 |
|---|---|---|
| committer | hukl <contact@smyck.org> | 2009-09-10 12:00:03 +0200 |
| commit | 8afffc09bcaa4d1c77f1ca575fd5978423631bff (patch) | |
| tree | cc9c4d8d402337903584d845f5f2df6afdc52ba1 /app/controllers | |
| parent | f7ce8c245fde3f6202103ae614b181c0ba44ed93 (diff) | |
refactored the create method to actually produce meaningful error messages when something goes wrong. added tests for corner cases
Diffstat (limited to 'app/controllers')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 0d4a3fe..b34c19e 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb | |||
| @@ -26,23 +26,24 @@ class NodesController < ApplicationController | |||
| 26 | def new | 26 | def new |
| 27 | @node = Node.new params[:node] | 27 | @node = Node.new params[:node] |
| 28 | end | 28 | end |
| 29 | 29 | ||
| 30 | def create | 30 | def create |
| 31 | parent = case params[:kind] | 31 | params[:title] ||= "" |
| 32 | when "top_level" then Node.root | ||
| 33 | when "update" then Update.find_or_create_parent | ||
| 34 | when "generic" then Node.find(params[:parent_id]) | ||
| 35 | end | ||
| 36 | 32 | ||
| 37 | if parent | 33 | @node = Node.new |
| 38 | @node = parent.children.create(:slug => params[:title].parameterize.to_s) | 34 | @node.parent_id = find_parent |
| 35 | @node.slug = params[:title].parameterize.to_s | ||
| 36 | |||
| 37 | if @node.save | ||
| 39 | @node.draft.update_attributes(:title => params[:title]) | 38 | @node.draft.update_attributes(:title => params[:title]) |
| 40 | redirect_to(edit_node_path(@node)) | 39 | redirect_to(edit_node_path(@node)) |
| 41 | else | 40 | else |
| 42 | render :action => :new | 41 | debugger |
| 42 | #@node.errors.add_to_base("Titel zu kurz") if @node.errors["slug"] | ||
| 43 | render :new | ||
| 43 | end | 44 | end |
| 44 | end | 45 | end |
| 45 | 46 | ||
| 46 | def show | 47 | def show |
| 47 | @page = Node.find(params[:id]).pages.last | 48 | @page = Node.find(params[:id]).pages.last |
| 48 | end | 49 | end |
| @@ -105,4 +106,19 @@ class NodesController < ApplicationController | |||
| 105 | def find_node | 106 | def find_node |
| 106 | @node = Node.find(params[:id]) | 107 | @node = Node.find(params[:id]) |
| 107 | end | 108 | end |
| 109 | |||
| 110 | def find_parent | ||
| 111 | case params[:kind] | ||
| 112 | when "top_level" | ||
| 113 | Node.root.id | ||
| 114 | when "update" | ||
| 115 | Update.find_or_create_parent.id | ||
| 116 | when "generic" | ||
| 117 | if params[:parent_id] && Node.find(params[:parent_id]) | ||
| 118 | params[:parent_id] | ||
| 119 | else | ||
| 120 | nil | ||
| 121 | end | ||
| 122 | end | ||
| 123 | end | ||
| 108 | end | 124 | end |
