通过AngularJS在Rails 4中将邮件附件保存到数据库

4

我正在尝试使用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

任何想法都将不胜感激。谢谢!

你已经把这个搞定了吗? - user1724295
2个回答

1

0

嗨,我遇到了一个错误:“未定义上传”。你能帮我解决一下吗? - shivaP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接