![](/img/trans.png)
[英]Rails Carrierwave upload multiple files undefined method `[]' for nil:NilClass
[英]rails carrierwave, upload multiple files
這是我的第一個問題stackoverflow 。
我試圖一次修改上傳多個文件。
new.html.erb
<%= form_for(@attractions) do |f| %>
<div class="form-group">
<%= f.label :name, t("attraction.name"), class: "col-md-2 control-label" %>
<div class="col-md-10">
<%= f.text_field :name, class: "form-control" %>
</div>
</div>
<div class="form-group">
<%= f.fields_for :attraction_photos do |att_photo| %>
<%= att_photo.label :photo, t("attraction.attraction_photo"), class: "col-md-2 control-label" %>
<div class="col-md-10">
<%= att_photo.file_field :photo, class: "form-control", multiple: true %> // <==== I add this
</div>
<% end %>
</div>
吸引力控制器
def new
@attractions = Attraction.new
@attractions.attraction_photos.build
end
def create
@attractions = current_user.attractions.build(attraction_params)
if @attractions.save
flash[:success] = "success"
redirect_to attractions_path
else
flash[:danger] = @attractions.errors.full_messages
render action: :new
end
end
def attraction_params
params.require(:attraction).permit(:name, :longitude, :latitude, :address, :phone, :category_id, attraction_photos_attributes: [:photo => []])
end
我得到的參數是
{
"name" => "name",
"longitude" => "111",
"latitude" => "222",
"address" => "addresss",
"phone" => "phone",
"category_id" => "1",
"attraction_photos_attributes" => {
"0" => {
"photo" => [#, @original_filename = "aaaaaaaaaaaa.png", @content_type = "image/png", @headers = "Content-Disposition: form-data; name=\"attraction[attraction_photos_attributes][0][photo][]\"; filename=\"aaaaaaaaaaaa.png\"\r\nContent-Type: image/png\r\n" > , #, @original_filename = "bbbbbbbbbbb.png", @content_type = "image/png", @headers = "Content-Disposition: form-data; name=\"attraction[attraction_photos_attributes][0][photo][]\"; filename=\"bbbbbbbbbbb.png\"\r\nContent-Type: image/png\r\n" > ]
}
}
}
我想我應該使用循環來創建照片。 但是數據結構不是我想要的。 謝謝你的幫助。
開齋節
吸引力模型
class Attraction < ActiveRecord::Base
belongs_to :user
belongs_to :category
has_many :attraction_photos, dependent: :destroy
accepts_nested_attributes_for :attraction_photos
...
end
吸引力照片模型
class AttractionPhoto < ActiveRecord::Base
belongs_to :attraction
mount_uploader :photo, AttractionImageUploader
end
你有兩個選擇
第一種選擇是使用db中的json
字段上傳圖片。 並非所有數據庫都允許這樣做,例如某些mysql2
數據庫不允許您使用數據庫中的json
類型字段。 同樣使用它不是紅寶石的最佳實踐
另一個選項來自此解決方案,您將不會在數據庫中使用JSON字段,而是創建一個單獨的表
現在,請告訴我為什么您不想使用任何一種解決方案,因為我同時實現了這兩種解決方案,並且將盡力為您提供幫助
另外從您的問題還不清楚您遇到的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.