【问题标题】:Cloudinary cl_image_upload vs cl_image_upload_tagCloudinary cl_image_upload 与 cl_image_upload_tag
【发布时间】:2014-08-28 15:41:44
【问题描述】:

我正在尝试将图像从浏览器直接上传到云端。我遇到的问题是使用以下语法没有上传图像。

<%= form_for(@product_image) do |f| %>
  <div class="field">
    <%= f.cl_image_upload(:image) %>
  </div>
  <%= f.submit %>
<% end %>

如果我替换这个块

<%= f.cl_image_upload(:image) %>

<%= cl_image_upload_tag("product_image[image]") %>

上传仍然没有发生。但是,如果我把它们放在一起,那么它们都会上传。

我比较了 2 个 cloudinary 辅助方法生成的 html,它们生成的 html 代码完全相同。查看这两个辅助方法的代码,似乎一个在调用另一个。

def cl_image_upload(object_name, method, options={})
  cl_image_upload_tag("#{object_name}[#{method}]", options)
end

def cl_image_upload_tag(field, options={})
  html_options = options.delete(:html) || {}
  if options.delete(:multiple)
    html_options[:multiple] = true
    field = "#{ field }[]" unless field.to_s[-2..-1] == "[]"
  end

  tag_options = html_options.merge(:type=>"file", :name=>"file",
    :"data-url"=>cl_upload_url(options),
    :"data-form-data"=>cl_upload_tag_params(options),
    :"data-cloudinary-field"=>field,
    :"class" => [html_options[:class], "cloudinary-fileupload"].flatten.compact
  ).reject{|k,v| v.blank?}
  content_tag("input", nil, tag_options)
end

如果我真的只想使用一个块,那么我还必须添加额外的javascript

$('.cloudinary-fileupload).cloudinary_fileupload();

在您看来,使用 Carrierwave 从浏览器直接上传到云端的最佳方式是什么?

【问题讨论】:

    标签: javascript ruby-on-rails-4 carrierwave cloudinary


    【解决方案1】:

    Cloudinary 有一个完整的示例项目,其中包括使用 jQuery 库的客户端上传,包括 CarrierWave 集成。你可以看看并尝试一下: https://github.com/cloudinary/cloudinary_gem/tree/master/samples/photo_album

    【讨论】:

    • 谢谢 Itay,我去看看。
    猜你喜欢
    • 2021-02-12
    • 2019-04-20
    • 1970-01-01
    • 2012-11-06
    • 2017-06-17
    • 2020-04-26
    • 2015-11-09
    • 2016-01-03
    • 2016-03-25
    相关资源
    最近更新 更多