1
<%= 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",

誰でもこれを解決する方法を知っていますか? ありがとう!

アップデート:

Ryan の railscasts ビデオも JQuery で見ましたが、これに対する彼の修正はうまくいきませんでした。

ギャラリー.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
4

2 に答える 2

4

を指定していたので:multiple => true、rails は を生成しname="gallery[image][]"ます。https://github.com/rails/rails/pull/8108が原因で、レールの最新バージョン (3.2.13) にアップグレードするときにも、この問題が発生する可能性があります。

簡単な修正は、次のようなものです

$('#fileupload').fileupload({
    paramName: 'gallery[image]'
});

これはparamName、ファイル形式データを指定するオプションを利用します

参考文献:

于 2013-03-28T05:39:12.680 に答える
0

nameの中に入れなかったために問題が発生します。これはinput_html、使用することsimple formとおそらくsemantic form同様です

于 2014-01-25T11:08:03.450 に答える