私のレールアプリでは、複数のファイルを一度にアップロードできるようにしたいと考えています。CarrierwaveマルチファイルアップロードRails 5が動作しない
私はおそらく私の取り付けのための私のモデルでoptional: true
の必要な追加についての私のインターネット検索絶望で見つけたmultiple: true
をサポートmasterブランチでcarrierwave宝石
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
を使用しています。
私は、データベース内の配列型を使用することはできませんので、私は、MySQLを使用していますが、私は私のデータベース内Request
とRequest_Attachment
間has_many
、belongs_to
関係を設定しました。
私形式:
<%= f.fields_for :request_attachments do |ra| %>
<div class="row" id="uploader">
<div class="col-xs-12">
<label class="btn btn-info"> Upload Files
<%= ra.file_field :file, multiple: true, name: "request_attachments[file][]", :style => "display: none" %>
</label>
</div>
</div>
<% end %>
私のコントローラ
@request = Request.new(request_params)
if @request.save
if params[:request][:request_attachments]
params[:request][:request_attachments]['file'].each do |f|
@request_attachment = @request.request_attachments.create!(:file => f)
end
end
flash[:success] = "Your request was submitted successfully, check your email for a confirmation message."
redirect_to action: 'index', status: 303
else
render :new
end
def request_params
params.require(:request).permit(:jobtitle, :requester, :status, request_attachments_attributes: [:id, :request_id, :file])
end
私のモデル:
要求:
class Request < ApplicationRecord
has_many :request_attachments
accepts_nested_attributes_for :request_attachments
end
Request_Attachments:
class RequestAttachment < ApplicationRecord
mount_uploader :file, FileUploader
belongs_to :request, optional: true
end
私はname
部分を取り出すのと同じように、フォームのバリエーションを試しました。
multiple: true
部分を削除すると完全に機能しますが、multiple
オプションでは機能しません。
問題がどこにあるかはわかりません。だから、どんな助けでもいいと思います。
今何が起こっていることは要求が保存されますということですが、
のみ1 request_attachmentが作成され、
request_attachmentのファイル名が
nil
この例を見てください:http://stackoverflow.com/questions/21411988/rails-4-multiple-image-or-file-upload-using-carrierwave – AytanLeibowitz
@AytanLeibowitz私はそのコードを何度も見ました今、それは私のために働かないので、この質問。 – Avir94