From fe6b2b745f1391a8160fddc256516b0031390726 Mon Sep 17 00:00:00 2001 From: kerrieyee Date: Tue, 5 Feb 2013 00:21:17 -0800 Subject: [PATCH] working update in backbone and refactored controller --- .../job_prospects/job_prospect.js.coffee | 23 ++++++++++++++++++ .../job_prospects_index.js.coffee | 23 ++++++++++++++++++ .../templates/job_prospects/index.jst.eco | 3 +++ app/controllers/job_prospects_controller.rb | 24 ++++--------------- config/routes.rb | 3 ++- 5 files changed, 56 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/views/job_prospects/job_prospect.js.coffee b/app/assets/javascripts/views/job_prospects/job_prospect.js.coffee index 5e9c974..1228810 100644 --- a/app/assets/javascripts/views/job_prospects/job_prospect.js.coffee +++ b/app/assets/javascripts/views/job_prospects/job_prospect.js.coffee @@ -9,6 +9,7 @@ class JobOrg.Views.JobProspect extends Backbone.View initialize: -> @model.on('destroy', @unrenderJobProspect, this) + @model.on('save', @rerenderJobProspect, this) render: -> $(@el).html(@template(job_prospect: @model)) @@ -18,6 +19,28 @@ class JobOrg.Views.JobProspect extends Backbone.View event.preventDefault @model.destroy() + editJobProspect: (event, job_prospect) -> + event.preventDefault() + $('form#new_job_prospect').hide() + $('form#edit_job_prospect').show() + $('#edit_job_prospect_company').val(@model.get('company')) + $('#edit_job_prospect_position').val(@model.get('position')) + $('#edit_id').val(@model.get('id')) + + handleError: (job_prospect, response) -> + if response.status == 422 + errors = $.parseJSON(response.responseText).errors + for attribute, messages of errors + for message in messages + $('.alert-error').text("#{attribute} #{message}.") + $('.alert-error').show() + $('.alert-success').hide() + $('.alert-warning').hide() + $('.alert-notice').hide() + + rerenderJobProspect: -> + $(@el).html(@template(job_prospect: @model)) + this unrenderJobProspect: -> $(@el).remove() diff --git a/app/assets/javascripts/views/job_prospects/job_prospects_index.js.coffee b/app/assets/javascripts/views/job_prospects/job_prospects_index.js.coffee index 13072b6..f8dfc5a 100644 --- a/app/assets/javascripts/views/job_prospects/job_prospects_index.js.coffee +++ b/app/assets/javascripts/views/job_prospects/job_prospects_index.js.coffee @@ -4,6 +4,8 @@ class JobOrg.Views.JobProspectsIndex extends Backbone.View events: 'submit #new_job_prospect': 'createJobProspect' + 'click input[value="Update Job Prospect"]': 'updateJobProspect' + initialize: -> @collection.on('reset', @render, this) @@ -33,6 +35,27 @@ class JobOrg.Views.JobProspectsIndex extends Backbone.View $('.alert-warning').hide() $('.alert-notice').hide() error: @handleError + + updateJobProspect: (event, job_prospect) -> + event.preventDefault() + attributes = + company: $('#edit_job_prospect_company').val() + position: $('#edit_job_prospect_position').val() + editJob = @collection.get($('#edit_id').val()) + editJob.set attributes + editJob.save attributes, + wait: true + success: -> + $('#edit_job_prospect')[0].reset() + $('#edit_job_prospect').hide() + $('#new_job_prospect').show() + $('.alert-success').text "Your job prospect has been successfully updated." + $('.alert-error').hide() + $('.alert-success').show() + $('.alert-warning').hide() + $('.alert-notice').hide() + editJob.trigger("save") + error: @handleError handleError: (job_prospect, response) -> if response.status == 422 diff --git a/app/assets/templates/job_prospects/index.jst.eco b/app/assets/templates/job_prospects/index.jst.eco index 28d686b..147b97f 100644 --- a/app/assets/templates/job_prospects/index.jst.eco +++ b/app/assets/templates/job_prospects/index.jst.eco @@ -11,6 +11,7 @@
Position:

+ @@ -18,6 +19,8 @@ + + diff --git a/app/controllers/job_prospects_controller.rb b/app/controllers/job_prospects_controller.rb index 5d212ad..7f7d3ff 100644 --- a/app/controllers/job_prospects_controller.rb +++ b/app/controllers/job_prospects_controller.rb @@ -1,22 +1,10 @@ class JobProspectsController < ApplicationController respond_to :json, :html def index - @job_prospects = JobProspect.paginate(:page => params[:page], - :per_page => 8, - :order => 'created_at DESC', - :conditions => { :user_id => current_user.id }) + @job_prospects = JobProspect.where(:user_id => current_user.id) respond_with @job_prospects end - # def new - # @job_prospect=JobProspect.new - # respond_to do |format| - # format.html { render :action => "new" } - # format.js - # end - # end - - def create @job_prospect = JobProspect.create( :company => params[:job_prospect][:company], :position => params[:job_prospect][:position], @@ -24,15 +12,13 @@ def create respond_with @job_prospect end - # def edit - # @job_prospect = JobProspect.find(params[:id]) - # respond_to { |format| format.js } - # end - def update @job_prospect = JobProspect.find(params[:id]) + @job_prospect.update_attributes(:company => params[:job_prospect][:company], + :position => params[:job_prospect][:position], + :user => current_user) - @job_prospect.update_attributes(params[:job_prospect]) ? respond_with(@job_prospect) : respond_with(@job_prospect, :status => unprocessable_entity) + respond_with(@job_prospect) end def show diff --git a/config/routes.rb b/config/routes.rb index fd9a7f8..f45531a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,11 +2,12 @@ devise_for :users + root :to => "main#index" + scope "api" do resources :job_prospects end - root :to => "main#index" resources :job_prospects do resources :events end
Company Position Edit Delete