Я начинаю манипулировать угловыми с Rails 4, которые предоставляют только api. Я пытаюсь создать простую службу angular для загрузки файла. Но я использую Paperclip для управления файлом, и у меня есть некоторые проблемы.
Во-первых, я не понимаю, как правильно собрать файл ввода. Я вижу много директив плагина или жира, чтобы сделать это. Но я хочу, чтобы просто простая директива, которая собирала мой файл и помещала в мою ng-модель.
И, наконец, я хочу знать, эффективнее ли кодировать мой файл в Base64?
Контроллер My Rails
class Api::EmployeesController < Api::BaseController
def create
employee = Employee.create(employee_params)
if employee.save
render json: employee
else
render :json => { :errors => employee.errors.full_messages }, :status => 406
end
end
def employee_params
params.require(:employee).permit(:first_name,:mobile_phone,:file)
end
end
Моя служба Angularjs
angular.module('test').factory 'Employee', ($resource, $http) ->
class Employee
constructor: (errorHandler) ->
@service = $resource('/api/employees/:id',
{id: '@id'},
{update: {method: 'PATCH'}})
@errorHandler = errorHandler
create: (attrs, $scope) ->
new @service(employee: attrs).$save ((employee) ->
$scope.employees.push(employee)
$scope.success = true
$timeout (->
$scope.success = false
), 3000
), @errorHandler
My Angularjs Controller
angular.module('test').controller "EmployeesController", ($scope, $timeout, $routeParams, $location, Employee) ->
$scope.init = ->
@employeeService = new Employee(serverErrorHandler)
$scope.employees = @employeeService.all($scope)
$scope.createEmployee = (employee) ->
if $scope.employeeFirstName
@employeeService.create (
first_name: $scope.employeeFirstName
last_name: $scope.employeeLastName
promotion: $scope.employeePromotion
mobile_phone: $scope.employeeMobilePhone
nationality: $scope.employeeNationality
social_number: $scope.employeeSocialNumber
born_place: $scope.employeeBornPlace
employee_convention: $scope.employeeConvention
employee_type: $scope.employeeType
), $scope
else
$scope.error = "fields missing"