在Rails 4中通过AngularJS将回形针附件保存到DB

时间:2014-08-07 18:44:55

标签: ruby-on-rails angularjs paperclip

我试图通过Rails4中的AngularJS将照片保存到数据库中。我使用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.photoundefined的值。

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

我不知道如何通过Rails中的AngularJS + 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

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

2 个答案:

答案 0 :(得分:1)

有angular-file-upload提供程序,将$ upload注入你的控制器并使用ng-file-select指令,一切都在https://github.com/danialfarid/angular-file-upload

答案 1 :(得分:0)

查看提供的链接, 我已经成功实施了它。

Rails Example with paperclip