Ruby on rails 以嵌套Rails形式将多个图像上载到S3
我正在尝试让文件上传与Rails 4应用程序中标记的嵌套字段一起工作。我跟踪了几个铁路公司,即:,,但仍然不能完全让它发挥作用。还可以使用Carrierwave和jquery上传文件 应用程序的基本结构如下所示: blogpost.rbRuby on rails 以嵌套Rails形式将多个图像上载到S3,ruby-on-rails,ruby,file-upload,amazon-web-services,jquery-file-upload,Ruby On Rails,Ruby,File Upload,Amazon Web Services,Jquery File Upload,我正在尝试让文件上传与Rails 4应用程序中标记的嵌套字段一起工作。我跟踪了几个铁路公司,即:,,但仍然不能完全让它发挥作用。还可以使用Carrierwave和jquery上传文件 应用程序的基本结构如下所示: blogpost.rb class Blogpost < ActiveRecord::Base has_many :blogpics end blogpost_form.html.erb <div> <%= form_for @blogpost do
class Blogpost < ActiveRecord::Base
has_many :blogpics
end
blogpost_form.html.erb
<div>
<%= form_for @blogpost do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.hidden_field :post_id %>
<%= f.text_field :title %>
<%= f.text_field :location %>
<%= f.text_area :content %>
<%= f.fields_for :blogpics do |builder| %>
<%= builder.file_field :image %>
<%= builder.hidden_field :blogpost_id %>
<% end %>
<p><%= f.submit %></p>
<% end %>
我能够分别输入三个文件,然后成功上传。在将多个文件拖放到一个输入中的同时,是否有任何方法可以实现此功能
我非常感谢您的帮助和指导,谢谢。您的博客模型缺少接受嵌套属性关联
class Blogpost < ActiveRecord::Base
has_many :blogpics
accepts_nested_attributes_for :blogpics
end
我不太清楚如何在一个对话框中处理多个文件。我可以想象,您将使用一些javascript来检测选择了多个文件,并为每个文件创建字段表单。您可以将:multiple=>true作为builder.file_field:image上的参数传递。有关详细信息,请参阅 使用文件输入的multiple属性,可以拖放到输入元素上 有关详细信息,请参阅
我遇到过相同的问题,其中multiple:true会破坏嵌套表单,我的理解是,在控制器接收参数之前,必须手动转换参数。如果使用pry或debugger检查params散列,则需要比较在单个输入上提交多个输入文件的父模型与在一个输入上提交多个输入文件的父模型。前者创建一个子对象数组,每个子对象都有自己的文件,而后者只创建一个子对象,该子对象的所有图像都在一个数组中。是否需要:blogpost\u id的隐藏字段?您的关联不应该已经定义了这种关系吗?试试这个,为了简单起见,我在rails应用程序中编辑了我问题中的一些代码。我明白你的意思。Jquery文件上传是可能的,但我一直无法让这个特定的工具工作。我会继续努力,如果我找到解决方案,我会更新
<div>
<%= form_for @blogpost do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.hidden_field :post_id %>
<%= f.text_field :title %>
<%= f.text_field :location %>
<%= f.text_area :content %>
<%= f.fields_for :blogpics do |builder| %>
<%= builder.file_field :image %>
<%= builder.hidden_field :blogpost_id %>
<% end %>
<p><%= f.submit %></p>
<% end %>
def new
@blogpost = Blogpost.new
3.times do
blogpic = @blogpost.blogpics.build
end
end
class Blogpost < ActiveRecord::Base
has_many :blogpics
accepts_nested_attributes_for :blogpics
end