我正在尝试使用AngularJS在Rails4中通过数据库保存照片。我使用了paperclip
gem来设置附件。
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_attached_file :photo, :styles => {:thumb => "100x100>"}
end
这是我的表单:
<div ng-controller="RegistrationsController">
<form ng-submit="saveUser()" name="signUpForm" novalidate>
<input type="text" class="form-control" ng-model="user.email" ng-class="{submitted: submitted}" required />
<input type="file" ng-model="user.photo" />
</form>
</div>
这里是我的AngularJS控制器。在
saveUser()
函数中,它会触发POST
请求。我尝试输出$scope.user.photo
的值,但根据浏览器控制台日志,它是undefined
。myApp.controller "RegistrationsController", ($scope, $location, $http, $modal)->
$scope.saveUser = () ->
console.log $scope.user.photo
$scope.submitted = true
if $scope.signUpForm.$valid
$http(
url: "/api/users"
method: "POST"
data: $scope.user
).success((data) ->
$scope.user = {}
$location.path "/"
return
).error (response) ->
console.log(response)
return
return
我不知道如何通过AngularJS + Rails中的Paperclip保存/上传单个照片,也不知道该如何保存它的值。
下面是create方法的控制器代码:
class Api::V1::UsersController < ApplicationController
def create
@user = User.new(trusted_params)
if @user.save
UserMailer.welcome_email(@user).deliver!
render json: @user
else
render json: {
message: 'Validation failed', errors: @user.errors.full_messages
}, status: 422
end
end
private
def trusted_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :photo)
end
end
任何想法都将不胜感激。谢谢!