【发布时间】:2017-12-06 18:11:21
【问题描述】:
我正在尝试使用载波上传多个文件。每当我尝试上传文件时,我都能够上传唯一的单个文件。即使我在平面图控制器下的 permit({image: []}) 中添加了哈希数组。
它是控制器。
class FloorplansController < ApplicationController
def create
@project = Project.find(params[:project_id])
@floorplan = Floorplan.create(params[:floorplan].permit(:name,{image: []}))
@floorplan.user_id = current_user.id
@floorplan.project_id = @project.id
if @floorplan.save
redirect_to project_path(@project)
else
render 'new'
end
end
结束
这是我上传文件的部分表单。
= simple_form_for([@project, @project.floorplans.build],input_html: {multiple: true }) do |f|
= f.input :name, label: "Name the Floorplan"
= f.input :image, input_html: {multiple: true }, name:"floorplan[image][]", label: "Attach the Floorplan Image"
= f.button :submit, class: "button"
之后,我按照 RailsCast 第 381 集的说明附加了 jquery 文件上传器
平面图.咖啡
jQuery ->
$('#new_floorplan').fileupload()
这些是我的数据库迁移
class AddImageToFloorplans < ActiveRecord::Migration[5.1]
def change
add_column :floorplans, :image, :string
end
end
【问题讨论】:
-
您可以在创建操作的开头放置一个 byebug。只是为了确保您是否正在获取图像数组。
-
您是否使用嵌套属性来上传图片?
-
我认为你应该使用
f.simple_fields_for(floorplans) -
@gabbar 是的,我正在尝试使用嵌套属性,因为我找到了上传多个文件的解决方案。将 f.simple_fields_for 代替 ??
-
嗯,如果你不介意,我可以给你一个简单的想法来上传多个文件。你可以这样做。
标签: jquery ruby-on-rails carrierwave