I'm not sure whether my code looks good or not:
var app = angular.module('Todolist', ['ngResource', 'xeditable']); app.run(function(editableOptions) { editableOptions.theme = 'bs3'; }); app.controller('TasksCtrl', [ '$scope', 'Task', function($scope, Task) { $scope.user = gon.current_user $scope.updateTitle = function(data, task) { Task.update({ user_id: $scope.user.id, id: task.id, title: data }); }; $scope.updatePriority = function(data, task){ Task.update({ user_id: $scope.user.id, id: task.id, priority: data }) }; $scope.updateDueDate = function(task) { var autoclose = this; $('ul.tasks form input').datepicker({ dateFormat: 'yy-mm-dd', onSelect: function(date, instance) { task.due_date = date; Task.update({ user_id: $scope.user.id, id: task.id }, { due_date: date }); autoclose.$editable.scope.$form.$cancel(); } }); }; $scope.tasks = Task.query({ user_id: $scope.user.id, status: 'incompleted' }); $scope.completedTasks = Task.query({ user_id: $scope.user.id, status: 'completed' }); $scope.addNewTask = function() { var task = Task.save({user_id: $scope.user.id}, ($scope.newText)); $scope.tasks.push(task); $scope.newText = {}; }; $scope.deleteTask = function(task){ if (confirm('Are you sure')) { var index = $scope.tasks.indexOf(task); Task.delete({ user_id: $scope.user.id, id: task.id }, function(success){ $scope.tasks.splice(index, 1); }); } }; $scope.complete = function(task) { Task.update({ user_id: $scope.user.id, id: task.id, task: { completed: true } }, function() { var index; index = $scope.tasks.indexOf(task); $scope.tasks.splice(index, 1); $scope.completedTasks.push(task); }); }; $scope.restore = function(task) { Task.update({ user_id: $scope.user.id, id: task.id, task: { completed: false } }, function() { var index; index = $scope.completedTasks.indexOf(task); $scope.completedTasks.splice(index, 1); $scope.tasks.push(task); }); }; $scope.sort = function(property) { var arrow = $("#" + property); var direction; $('.sort .glyphicon'); arrow.addClass('incompleted'); if (arrow.hasClass('glyphicon-arrow-down')) { arrow.removeClass('glyphicon-arrow-down'); arrow.addClass('glyphicon-arrow-up'); direction = 'desc'; } else { arrow.addClass('glyphicon-arrow-down'); arrow.removeClass('glyphicon-arrow-up'); direction = 'asc'; } $scope.tasks = Task.query({ user_id: $scope.user.id, status: 'incompleted', order_by: property, direction: direction }); }; } ]);