Javascript 如何使用回形针、angular js、ng文件上传在rails中制作可选附件
我有一个“付款”表格,上面有一个文件附件,用于上传收据,我使用的是回形针、angular.js和ng文件上传插件 如果附件填好了,一切正常 但我想将此附件作为可选附件, 在这个问题上,我尝试了很多方法 , 但是没有人在我的表单上工作,总是会显示错误Javascript 如何使用回形针、angular js、ng文件上传在rails中制作可选附件,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,我有一个“付款”表格,上面有一个文件附件,用于上传收据,我使用的是回形针、angular.js和ng文件上传插件 如果附件填好了,一切正常 但我想将此附件作为可选附件, 在这个问题上,我尝试了很多方法 , 但是没有人在我的表单上工作,总是会显示错误 No handler found for null Completed 422 Unprocessable Entity in 119ms (Views: 15.4ms | ActiveRecord: 41.7ms) 我想问的是 在ng文件上传插
No handler found for null
Completed 422 Unprocessable Entity in 119ms (Views: 15.4ms | ActiveRecord: 41.7ms)
我想问的是
在ng文件上传插件中是否有任何方法可以制作一个附件,这样如果empety的话就不起作用了
有办法解决吗
这是我的回执图像回形针:
has_attached_file :receipt_img, dependent: :destroy
validates_attachment :receipt_img, :content_type => { :content_type => /\Aimage\/.*\Z/ }, :size => { :in => 0..2.megabytes }
这是我的报酬。咖啡:
Sprangular.service "Payment", ($http, $q, _, Env, Account, Cart, Flash, Upload) ->
service =
confirmPaymentBankTransfer: (order, payment, bankTransfer) ->
url = Spree.mountedAt() + "/api/orders/#{order.number}/payments/#{payment.id}"
bankTransfer.receipt_img.upload = Upload.upload
url: url
method: 'PUT'
headers:
'X-Spree-Order-Token': order.token
data:
payment:
receipt_img: bankTransfer.receipt_img
bank_name: bankTransfer.bank_name
deposited_on: bankTransfer.deposited_on
account_name: bankTransfer.account_name
account_no: bankTransfer.account_no
transaction_reference_no: bankTransfer.transaction_reference_no
our_bank_name: bankTransfer.our_bank_name
# $http.put(url, $.param(params), config)
# .success (response) ->
# Flash.success 'app.account_updated'
# .error (response) ->
# Flash.error 'app.account_update_failed'
service
谢谢
编辑添加控制器。咖啡
'use strict'
class Sprangular.BankTransfer
Validity.define @,
deposited_on: 'required'
bank_name: 'required'
account_no: 'required'
transaction_reference_no: 'required'
our_bank_name: 'required'
constructor: (deposited_on=null, bank_name=null, account_name=null, account_no=null, transaction_reference_no=null, our_bank_name=null, receipt_img=null) ->
@deposited_on = deposited_on
@bank_name = bank_name
@account_name = account_name
@account_no = account_no
@transaction_reference_no = transaction_reference_no
@our_bank_name = our_bank_name
@receipt_img = receipt_img
init: ->
@id = @id
@deposited_on = @deposited_on
@bank_name = @bank_name
@account_name = @account_name
@account_no = @account_no
@transaction_reference_no = @transaction_reference_no
@our_bank_name = @our_bank_name
@receipt_img = @receipt_img
same: (other) ->
@id == other.id
验证\u附件
要求附件存在并符合您声明的所有规范。如果希望附件是可选的,请使用allow\u nil
:
validates_attachment :receipt_img,
:content_type => { :content_type => /\Aimage\/.*\Z/ },
:size => { :in => 0..2.megabytes },
:allow_nil => true
哦,阿兰杜利亚,上帝,
一天的头痛之后我自己解决了
在尝试了许多参考方法之后,却没有人能成功,
我通过在我的服务(payment.coffee)中创建一个条件来解决这个问题,因此服务看起来如下:
Sprangular.service "Payment", ($http, $q, _, Env, Account, Cart, Flash, Upload) ->
service =
confirmPaymentBankTransfer: (order, payment, bankTransfer) ->
if bankTransfer.receipt_img is null
params =
payment:
bank_name: bankTransfer.bank_name
deposited_on: bankTransfer.deposited_on
account_name: bankTransfer.account_name
account_no: bankTransfer.account_no
transaction_reference_no: bankTransfer.transaction_reference_no
config =
ignoreLoadingIndicator: true
headers:
'X-Spree-Order-Token': order.token
url = Spree.mountedAt() + "/api/orders/#{order.number}/payments/#{payment.id}"
$http.put(url, $.param(params), config)
.success (response) ->
Flash.success 'app.account_updated'
.error (response) ->
Flash.error 'app.account_update_failed'
else
url = Spree.mountedAt() + "/api/orders/#{order.number}/payments/#{payment.id}"
bankTransfer.receipt_img.upload = Upload.upload
url: url
method: 'PUT'
headers:
'X-Spree-Order-Token': order.token
data:
payment:
receipt_img: bankTransfer.receipt_img
bank_name: bankTransfer.bank_name
deposited_on: bankTransfer.deposited_on
account_name: bankTransfer.account_name
account_no: bankTransfer.account_no
transaction_reference_no: bankTransfer.transaction_reference_no
our_bank_name: bankTransfer.our_bank_name
# $http.put(url, $.param(params), config)
# .success (response) ->
# Flash.success 'app.account_updated'
# .error (response) ->
# Flash.error 'app.account_update_failed'
service
所以我把if-else条件放在函数上,。
看起来有点脏,但对我来说没问题
谢谢你的帮助 我应该在哪里申报?是这样吗?验证附件:receipt\u img,:content\u type=>{:content\u type=>/\Aimage\/.\Z/},:size=>{:in=>0..2.MB},allow\u nil:trueYep,这是spotno,它仍然不起作用,错误显示为“在119ms(视图:15.4ms | ActiveRecord:41.7ms)内未找到null已完成的422个不可处理实体的处理程序”,我编辑了这个问题,我加了控制器,也许能帮上更多的忙,。