【发布时间】:2014-04-21 23:20:43
【问题描述】:
我正在尝试让文件上传与 Rails 4 应用程序中的嵌套 fields_for 标记一起使用。我已经关注了几个 Railscast,即:253、381、383,但仍然不能完全发挥其功能。还使用 Carrierwave 和 jquery 文件上传。
基本应用结构如下:
blogpost.rb
class Blogpost < ActiveRecord::Base
has_many :blogpics
end
blogpic.rb
class Blogpic < ActiveRecord::Base
belongs_to :blogpost
end
blogposts_controller.rb
def new
@blogpost = Blogpost.new
blogpic = @blogpost.blogpics.build
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 %>
上传单个文件有效。但是,将 ":multiple => true, :name => 'blogpic[image]'" 添加到文件字段会破坏功能并且不会上传文件。
当我这样编辑 blogposts_controller.rb 时:
def new
@blogpost = Blogpost.new
3.times do
blogpic = @blogpost.blogpics.build
end
end
我可以分别输入三个文件,然后上传成功。 有什么方法可以实现此功能,同时能够将多个文件拖放到一个输入中?
非常感谢任何帮助和指导,谢谢。
【问题讨论】:
-
:blogpost_id 的 hidden_field 是否必要?你的协会不应该已经定义了这种关系吗?
-
dropzonejs.com 试试这个
标签: ruby-on-rails ruby file-upload amazon-web-services jquery-file-upload