<%= semantic_form_for(@image, :url => { :action => "create_friend_upload" }, :html => {:multipart => true}) do |f| %>
<%= f.inputs do %>
<%= f.input :image, :input_html => {:multiple => true}, name: "gallery[image]" %>
<%= f.hidden_field :friend_upload, :value => true %>
<%= f.hidden_field :user_id %>
<%= f.hidden_field :friend_uploader, :value => current_user.name %>
<% end %>
<%= f.buttons do %>
<%= f.commit_button :button_html => {:class => "primary"} %>
<% end %>
<% end %>
我遇到的问题是它一直在提交一个Carrierwave无法处理的数组。它一直在说name=\"gallery[image][]\"
,而不仅仅是name=\"gallery[image]\"
。 (见下文)。因此,我还会不断收到错误消息can't convert nil into String
。
@headers="Content-Disposition: form-data; name=\"gallery[image][]\"; filename=\"VW 3.jpeg\"\r\nContent-Type: image/jpeg\r\n",
任何人都知道如何解决这个问题?谢谢!
更新
我确实在JQuery上看到了Ryan的railscasts视频,他对此的修复对我没有用。
Gallery.rb
class Gallery < ActiveRecord::Base
attr_accessible :image, :name, :friend_upload,
mount_uploader :image, GalleryUploader
end
图库控制器
def friend_upload
@image = Gallery.new
end
def create_friend_upload
@image = Gallery.create(params[:gallery])
end
答案 0 :(得分:4)
由于您指定了:multiple => true
,因此rails会生成name="gallery[image][]"
。由于https://github.com/rails/rails/pull/8108升级到最新版本的rails(3.2.13),您可能还会遇到此问题。
简单的解决方案将是
$('#fileupload').fileupload({
paramName: 'gallery[image]'
});
这利用paramName
选项指定文件格式数据
参考文献:
答案 1 :(得分:0)
问题出现是因为你没有将name
放在input_html
内,这就是使用simple form
而且可能semantic form
的事情