Ich bin ziemlich neu bei Rails und Carrierwave.Carrierwave Bild Upload zurück leer bei Params
Ich habe dieses Formular, das eine jquery modale Box mit etwas dynamischem Code zeigt, um 1 bis N Bilder anzuzeigen, die vom Benutzer gewählt werden, als er auf den Dateiknopf klickt.
Das ist meine wird Eingabedatei, zusammen mit seiner Form (ich habe den Rest html entfernt, wie es zu diesem Zweck der Veranschaulichung meines Problems irrelevant scheint): mein
<%= simple_form_for [:project, ConsolidatedDocument.new], html: { role: 'form' } do |f| %>
...
<input type="file" name="photo[files][]" multiple="multiple" id="file_upload_input">
...
<%= f.button :button, class: 'btn btn-primary btn-xs' %>
...
<% end %>
Bei Controller, versuche ich alle Werte der Formulareingaben zu speichern, die scheinbar automatisch erscheinen, wenn ich den Knopf drücke.
Das Problem ist, dass jeder Wert, der mit der Eingabedatei kommen sollte, vollständig leer ist, und ich kann nicht den Grund finden, warum es leer ist. Hier ist meine params wenn einreichen schlagen:
(byebug) params
{"utf8"=>"✓", "authenticity_token"=>"xESj3za30Y9CBXqG6P3MHm9axNGsRY/+ejsiMLYfIPVyto7CAnTVYdhW5xBMlzpiBKPbXq2h0tfE8KYnXtmkVg==", "photo"=>{"files"=>[""]}, "macro_types_1"=>{"id"=>"4"}, "doc_types_create_1"=>{"id"=>"127"}, "macro_types_0"=>{"id"=>"5"}, "doc_types_create_0"=>{"id"=>"141"}, "document_checklist_comment"=>{"photo_ids"=>["87611", "87612"]}, "button"=>"", "controller"=>"consolidated_documents", "action"=>"create", "project_id"=>"524"}
Sehen Sie, dass "Foto" => { "Dateien" => [ ""]} besteht darauf, in den kommenden leer. Wie gesagt, ich habe keine Erfahrung mit Rails und obwohl ich StackOverflow für ähnliche Probleme durchsucht habe, scheint es, dass meins anders ist als die, nach denen ich hier gesucht habe.
Irgendwelche Vorschläge?
Edit:
als Update, ich habe mit meiner Form gebastelt, indem Sie die Datei manuell vorbei, wenn ich ConsolidatedDocuments.new nennen, etwa so:
post_attributes = params.require(:consolidated_document).permit(:name, :file, :document_type_id, :project_id, :user_id)
@consolidated_document = ConsolidatedDocument.new("name" => @file_name, "file" => @file_string, "document_type_id" => params["doc_types_create_"+i.to_s]["id"],"project_id" => @project.id, "user_id" => current_user.id)
Dann habe ich, dass ganz gleich bemerkt Was ich als Wert für diesen "file" => @file_string Teil übergebe, wird "file" immer als nil rendern.
Hier ist, wie mein Objekt wie Speichern des Schlagens zur Zeit aussieht:
(byebug) @consolidated_document
#<ConsolidatedDocument id: nil, name: "4f70d1b892066f849ee88222b7251ac6.jpg", file: nil, deleted: false, deleted_at: nil, document_type_id: 141, project_id: 524, user_id: 409, created_at: nil, updated_at: nil>
Datei besteht null in comming out! Woher?
Haben Sie folgten https://github.com/carrierwaveuploader/carrierwave # multiple-file-uploads – Sajan
Ja @sajan. Es ist nicht die erste Bild-Upload-Routine, die in diesem System eingebaut ist. Daher wurden alle Parametrierungen und Konfigurationen bereits richtig eingestellt. Es scheint mir, dass die Natur sowohl dieses Multifile-Uploads als auch die Tatsache, dass es einige dynamisch erzeugte Eingaben enthält, die Ursache für diese Implementierung ist. Ich versuche es jetzt genau unter die Lupe zu nehmen. –