我試圖啓用從瀏覽器直接圖像上傳到cloudinary。我有這個問題,就是根據下面的語法,圖像沒有被上傳。Cloudinary cl_image_upload vs cl_image_upload_tag
<%= 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
如果我真的想用僅有一個街區<%= f.cl_image_upload(:圖片)%>,然後我也有添加額外的JavaScript
$ (」 .cloudinary-文件上傳).cloudinary_fileupload();
在您看來,使用Carrierwave從瀏覽器上傳到cloudinary的最佳方式是什麼?
謝謝itay,我會檢查出來。 – Khanetor