我已经挣扎了一个星期了,我试图在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
我的问题是,即使我的"图像"形式出现,我无法通过其他模型保存图像,没有任何内容上传到我的"公共/上传"目录中,也没有任何内容写入我的数据库。
我在网上找不到任何能解决这个问题的有趣的东西
请随意要求另一个文件
欢迎任何帮助
permit_params:title,:description,:images
为什么: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
管理/gallery.rb注意:使用序列化与Sqlite,对于Postgres或其他能够处理数组的数据库读:
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