2012-10-09 3 views
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도 계속 표시됩니다.Carrierwave 및 JQuery 파일 업로드를 사용한 다중 파일 업로드

@headers="Content-Disposition: form-data; name=\"gallery[image][]\"; filename=\"VW 3.jpeg\"\r\nContent-Type: image/jpeg\r\n", 

누구나 이것을 해결하는 방법을 알고 계십니까? 감사!

업데이트 : 나뿐만 아니라 JQuery와 라이언의 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

당신이 우리에게 갤러리 모델 선언을 보여줄 수 simple form를 사용하여 일을 그게 전부? –

+0

@ D3mon-1stVFW, 갤러리의 모델 및 컨트롤러로 질문을 업데이트했습니다. 감사. – noob

+0

http://pjambet.github.com/blog/direct-upload-to-s3/ 여기에 설명 된대로 carrierwave를 우회하여 s3에 파일을 직접 업로드 할 수 있습니다.이 예는 하나의 파일이지만 한 파일 만 사용할 수 있습니다. 파일 입력 여러, 그것은 잘 작동합니다. – pjam

답변

4

당신이 :multiple => true를 지정하고 있으므로, 레일 name="gallery[image][]"를 생성합니다. https://github.com/rails/rails/pull/8108으로 인해 레일 (3.2.13)의 최신 버전으로 업그레이드 할 때도이 문제가 발생할 수 있습니다.

+1

3.2.13의 변경으로 인해이 문제가 발생했습니다. 답변을 찾을 때까지 혼란 스럽습니다. 고맙습니다!! –

+1

레일스 4의 특정 문제 였지만,이 우아한 솔루션에 감사드립니다. –

0

문제는 당신이 input_html의 내부 name를 넣어 didnt가 있기 때문에, 표시 아마 semantic form뿐만 아니라

관련 문제