有效的admin / Carrierwave多张图片上传

时间:2016-09-18 14:06:27

标签: ruby-on-rails model activeadmin multi-upload

我一直在苦苦挣扎一周,我正在尝试在active_admin中创建一个表单,用户可以选择几张图片,添加说明和标题,然后提交表单以创建看起来像库

到目前为止,我有两个使用命令创建的模型:

rails g model Gallery title:string description:text
rails g model Image url:text #just in case the user has LOTS of images to upload

以下是我的模特现在的样子:

gallery.rb

class Gallery < ApplicationRecord
  has_many :images
  accepts_nested_attributes_for :images, allow_destroy: true
end

image.rb

class Image < ApplicationRecord

  belongs_to :gallery
  mount_uploader :image, ImageUploader #Using Carrier Wave
end

系统管理员/ gallery.rb

  permit_params :title, :description, :images

  form html: { multipart: true }  do |f|
    f.inputs  do
      f.input :title
      f.input :description
      f.input :images, as: :file, input_html: { multiple: true }
    end
    f.actions
  end

我的问题是即使我的'图像'表单出现了,我也无法通过其他模型保存图像,没有任何内容被上传到我的'public / upload'目录中,并且我的数据库中没有任何内容被写入

我找不到任何有趣的互联网可以解决这个问题

随意提出另一个文件

欢迎任何帮助

1 个答案:

答案 0 :(得分:1)

  

permit_params:title,:description,:images

为什么:图片,我认为你的意思是 images_attributes:[:url]

但那也不会奏效。我按照这里的步骤进行了操作:https://github.com/carrierwaveuploader/carrierwave/issues/1653#issuecomment-121248254

只需一个模型即可实现

rails g model Gallery title:string description:text url:string

模型/ gallery.rb

# your url is accepted as an array, that way you can attach many urls
serialize :url, Array
mount_uploaders :url, ImageUploader
  

注意:使用序列化与Sqlite,For Postgres或其他一些能够处理数组的数据库读取:Add an array column in Rails

管理员/ gallery.rb

permit_params :title, :description, url: []
form html: { multipart: true }  do |f|
  f.inputs  do
    f.input :title
    f.input :description
    f.input :url, as: :file, input_html: { multiple: true }
  end
  f.actions
end