2014-07-08 41 views
1

我試圖啓用從瀏覽器直接圖像上傳到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的最佳方式是什麼?

回答