From 5e14cbe33fdf839827eff9b7037e55be95b9811a Mon Sep 17 00:00:00 2001 From: Tanner Welsh Date: Wed, 29 Oct 2014 12:25:29 -0400 Subject: [PATCH 1/4] User can edit user information at /resumes/edit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Link to edit page from résumé show page - Form for editing user information, pre-populated with existing data - Routes to update user data in database --- linkedout.rb | 12 ++++++++++++ views/resumes/edit.erb | 31 +++++++++++++++++++++++++++++++ views/resumes/show.erb | 3 +-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 views/resumes/edit.erb diff --git a/linkedout.rb b/linkedout.rb index 101008e..f82addc 100644 --- a/linkedout.rb +++ b/linkedout.rb @@ -15,3 +15,15 @@ def default_user erb :'resumes/show' end + +get "/resumes/edit" do + erb :'resumes/edit' +end + +put "/users/edit" do + user_attrs = params[:user] + + default_user.update(user_attrs) + + redirect "/" +end diff --git a/views/resumes/edit.erb b/views/resumes/edit.erb new file mode 100644 index 0000000..4e49208 --- /dev/null +++ b/views/resumes/edit.erb @@ -0,0 +1,31 @@ +
+

Edit My Résumé

+ +
+
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +
+
+
diff --git a/views/resumes/show.erb b/views/resumes/show.erb index f43535f..6cb3a62 100644 --- a/views/resumes/show.erb +++ b/views/resumes/show.erb @@ -1,5 +1,6 @@

My Résumé

+ Edit

<%= default_user.name %>

@@ -10,8 +11,6 @@

<%= default_user.bio %>

- -
From f80b0df1f791f3bf255de27a1a1affd7b5896f90 Mon Sep 17 00:00:00 2001 From: Tanner Welsh Date: Wed, 29 Oct 2014 12:52:21 -0400 Subject: [PATCH 2/4] Use better_errors gem in development [Better errors](https://github.com/charliesome/better_errors) is a great gem for debugging in Rack applications (like Sinatra and Rails). --- Gemfile | 2 ++ Gemfile.lock | 11 +++++++++++ linkedout.rb | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/Gemfile b/Gemfile index f145522..d01c681 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,8 @@ group :development do gem 'dm-sqlite-adapter' gem 'dotenv' gem 'rerun' + gem 'better_errors' + gem 'binding_of_caller' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index ba38a6e..dfb770c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,8 +5,15 @@ GEM bcrypt (3.1.9) bcrypt-ruby (3.1.5) bcrypt (>= 3.1.3) + better_errors (2.0.0) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) celluloid (0.16.0) timers (~> 4.0.0) + coderay (1.1.0) data_mapper (1.2.0) dm-aggregates (~> 1.2.0) dm-constraints (~> 1.2.0) @@ -19,6 +26,7 @@ GEM dm-validations (~> 1.2.0) data_objects (0.10.14) addressable (~> 2.1) + debug_inspector (0.0.2) dm-aggregates (1.2.0) dm-core (~> 1.2.0) dm-constraints (1.2.0) @@ -61,6 +69,7 @@ GEM do_sqlite3 (0.10.14) data_objects (= 0.10.14) dotenv (1.0.2) + erubis (2.7.0) faker (1.4.3) i18n (~> 0.5) fastercsv (1.5.5) @@ -99,6 +108,8 @@ PLATFORMS ruby DEPENDENCIES + better_errors + binding_of_caller data_mapper dm-postgres-adapter dm-sqlite-adapter diff --git a/linkedout.rb b/linkedout.rb index f82addc..31e2607 100644 --- a/linkedout.rb +++ b/linkedout.rb @@ -1,8 +1,14 @@ require 'sinatra' +require 'better_errors' require_relative 'config/dotenv' require_relative 'models' +configure :development do + use BetterErrors::Middleware + BetterErrors.application_root = File.expand_path('..', __FILE__) +end + helpers do def default_user @default_user ||= User.last From 0902118634b3d34eaf1de3cd5959d0469dbb308c Mon Sep 17 00:00:00 2001 From: Tanner Welsh Date: Wed, 29 Oct 2014 12:53:37 -0400 Subject: [PATCH 3/4] User can edit job information at /resumes/edit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The résumé edit page will now render all of the jobs as forms that users can update. As of now, each job is editable in isolation (i.e. no batch updates of multiple jobs). Added a new route to handle updating jobs. --- linkedout.rb | 13 +++++++++++++ views/resumes/edit.erb | 26 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/linkedout.rb b/linkedout.rb index 31e2607..cfa611a 100644 --- a/linkedout.rb +++ b/linkedout.rb @@ -23,6 +23,8 @@ def default_user end get "/resumes/edit" do + @jobs = default_user.jobs + erb :'resumes/edit' end @@ -33,3 +35,14 @@ def default_user redirect "/" end + +put "/jobs/edit" do + job_attrs = params[:job] + + job_id = job_attrs.delete("id") + + job = Job.get(job_id) + job.update(job_attrs) + + redirect "/" +end diff --git a/views/resumes/edit.erb b/views/resumes/edit.erb index 4e49208..654e4b8 100644 --- a/views/resumes/edit.erb +++ b/views/resumes/edit.erb @@ -28,4 +28,30 @@
+ +
+

Jobs

+ + +
From 7d563cdf41c183c88f22235541c137d3d8b06735 Mon Sep 17 00:00:00 2001 From: Tanner Welsh Date: Wed, 29 Oct 2014 13:01:06 -0400 Subject: [PATCH 4/4] User can edit skills information at /resumes/edit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The résumé edit page will now render all of the skills as forms that users can update. As of now, each skill is editable in isolation (i.e. no batch updates of multiple skill). Added a new route to handle updating skills. --- linkedout.rb | 12 ++++++++++++ views/resumes/edit.erb | 21 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/linkedout.rb b/linkedout.rb index cfa611a..a791d0c 100644 --- a/linkedout.rb +++ b/linkedout.rb @@ -24,6 +24,7 @@ def default_user get "/resumes/edit" do @jobs = default_user.jobs + @skills = default_user.skills erb :'resumes/edit' end @@ -46,3 +47,14 @@ def default_user redirect "/" end + +put "/skills/edit" do + skill_attrs = params[:skill] + + skill_id = skill_attrs.delete("id") + + skill = Skill.get(skill_id) + skill.update(skill_attrs) + + redirect "/" +end diff --git a/views/resumes/edit.erb b/views/resumes/edit.erb index 654e4b8..be2f667 100644 --- a/views/resumes/edit.erb +++ b/views/resumes/edit.erb @@ -31,7 +31,6 @@

Jobs

-
    <% @jobs.each do |job| %>
  • @@ -54,4 +53,24 @@ <% end %>
+ +
+

Skills

+
    + <% @skills.each do |skill| %> +
  • +
    + + + + + +
    + + +
    +
  • + <% end %> +
+