2

我正在将 UploadCare 集成到我的 Rails 应用程序中。我的Book模型中有一个名为的字段image_url,一个纯字符串。

上传图像可以正常工作,但问题是当小部件以模型的形式初始化时,该模型已经具有现有值,image_url不是 UploadCare url。

只要该image_url字段具有 UploadCare 图像 url,该小部件就可以正常工作。但如果它有类似的东西:http://i.imgur.com/foobar.jpg它说“值不正确”。似乎小部件知道该图像不在 UploadCare 上,因此出于某种原因它说值不正确。

我正在使用uploadcare-rails宝石。

有什么方法可以调整这种行为吗?

4

1 回答 1

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(带有路径的 URL,以 UUID 开头),它将重置小部件的值,但将保留隐藏输入的值。因此,如果用户提交表单,将保存一个非 UploadCare URL。

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

于 2016-01-11T13:04:05.223 回答