From 6f65ef8437e690d6414ce1f4c3b19bbd21f3c9fe Mon Sep 17 00:00:00 2001 From: Lukas Matt Date: Tue, 1 Apr 2014 06:24:48 -0400 Subject: [PATCH] Using save for report model Instead of checking the status code I am using success and error callbacks from model-save. In that case we have to return json in the controller for signaling that the request was sucessfully. --- app/assets/javascripts/app/models/report.js | 1 + app/assets/javascripts/app/views.js | 47 ++++++++++----------- app/controllers/report_controller.rb | 4 +- 3 files changed, 24 insertions(+), 28 deletions(-) diff --git a/app/assets/javascripts/app/models/report.js b/app/assets/javascripts/app/models/report.js index 394aa0ce4..d2d734221 100644 --- a/app/assets/javascripts/app/models/report.js +++ b/app/assets/javascripts/app/models/report.js @@ -1,3 +1,4 @@ app.models.Report = Backbone.Model.extend({ urlRoot: '/report', + type: 'POST' }); diff --git a/app/assets/javascripts/app/views.js b/app/assets/javascripts/app/views.js index 8f2c718d4..e0f41e553 100644 --- a/app/assets/javascripts/app/views.js +++ b/app/assets/javascripts/app/views.js @@ -84,33 +84,30 @@ app.views.Base = Backbone.View.extend({ report: function(evt) { if(evt) { evt.preventDefault(); } var msg = prompt(Diaspora.I18n.t('report.prompt'), Diaspora.I18n.t('report.prompt_default')); - if (msg == null) return; + if (msg == null) { + return; + } + var data = { + report: { + post_id: this.model.id, + post_type: $(evt.currentTarget).data("type"), + text: msg + } + }; + var report = new app.models.Report(); - var id = this.model.id; - var type = $(evt.currentTarget).data("type"); - - report.fetch({ - data: { - report: { - post_id: id, - post_type: type, - text: msg - } + report.save(data, { + success: function(model, response) { + Diaspora.page.flashMessages.render({ + success: true, + notice: Diaspora.I18n.t('report.status.created') + }); }, - type: 'POST', - statusCode: { - 200: function(xhr) { - Diaspora.page.flashMessages.render({ - success: true, - notice: Diaspora.I18n.t('report.status.created') - }); - }, - 400: function(xhr) { - Diaspora.page.flashMessages.render({ - success: false, - notice: Diaspora.I18n.t('report.status.exists') - }); - } + error: function(model, response) { + Diaspora.page.flashMessages.render({ + success: false, + notice: Diaspora.I18n.t('report.status.exists') + }); } }); }, diff --git a/app/controllers/report_controller.rb b/app/controllers/report_controller.rb index 0cb8c8b9b..42312c88e 100644 --- a/app/controllers/report_controller.rb +++ b/app/controllers/report_controller.rb @@ -29,10 +29,8 @@ class ReportController < ApplicationController def create report = current_user.reports.new(report_params) if report.save - flash.now[:notice] = I18n.t 'report.status.created' - render :nothing => true, :status => 200 + render :json => true, :status => 200 else - flash.now[:error] = I18n.t 'report.status.failed' render :nothing => true, :status => 409 end end