簡體   English   中英

rails carrierwave,上傳多個文件

[英]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字段,而是創建一個單獨的表

Rails 4使用carrierwave上傳多個圖像或文件

現在,請告訴我為什么您不想使用任何一種解決方案,因為我同時實現了這兩種解決方案,並且將盡力為您提供幫助

另外從您的問題還不清楚您遇到的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM