2016-01-07 21 views
2

我正在將UploadCare集成到我的Rails應用中。我在Book模型中有一個字段,名稱爲image_url,它是一個純字符串。Uploadcare小部件顯示「錯誤的值」字符串

上傳圖片可以正常工作,但問題在於,窗口小部件初始化的模型已經具有image_url,不是UploadCare網址的現有值。

只要image_url字段具有UploadCare圖片url,該小部件就可以正常工作。但是如果它有這樣的東西:http://i.imgur.com/foobar.jpg它說「不正確的值」。看來這個小部件知道這個圖像不在UploadCare上,所以它出於某種原因說出的值不正確。

我正在使用uploadcare-rails寶石。

有什麼方法可以調整此行爲嗎?

+0

究竟是如何做的,你要調整這種行爲? Widget無法顯示任意鏈接,因爲它的值:它不知道真正的文件名稱,大小並且無法顯示預覽。也許更好的解決方案是不使用這些鏈接的小部件。 – homm

+0

@homm:只是一個空值對我們的用例來說足夠好。 –

回答

1

這有點棘手,但仍有可能。這是代碼,它應該爲你的情況下工作:

function patchWidget(widget) { 
    function onChange(file) { 
    // Fire only once 
    widget.onChange.remove(onChange); 
    if (file.state() == 'rejected') { 
     file.fail(function(reason) { 
     if (reason == 'baddata') { 
      var value = $(widget.inputElement).val(); 
      widget.value(null); 
      $(widget.inputElement).val(value); 
     } 
     }); 
    } 
    } 
    widget.onChange.add(onChange); 
} 

它將如果它不是Uploadcare網址(URL的路徑,這與UUID開始)復位控件的值,但將保留隱藏輸入的值。因此,如果用戶提交表單,則不會保存UploadCare網址。

完整的示例:http://jsbin.com/gucuqoc/watch?html,js,output