【发布时间】:2021-01-13 12:11:41
【问题描述】:
我想让我的应用通过 Shrine 上传多个文件,但 one doc 建议使用两个 file_fields,而 other 建议只使用一个。在他们的讨论论坛发布问题后,有人建议我隐藏名为files[] 的问题。无论我是否这样做,第一个 file_field 总是无法渲染。为什么这个字段不显示?
<%= form_for @item, html: { enctype: "multipart/form-data" } do |f| %>
<%= f.fields_for :photos do |i| %>
<%= i.label :image %>
<%= i.hidden_field :image, value: i.object.cached_photos_data, class: "upload-data" %>
<%= i.file_field :image, class: "upload-file" %> /// why is this not rendering?????
<% end %>
<%= file_field_tag "files[]", multiple: true %> // what purpose does this one serve?
<%= f.text_field :title %>
<%= f.submit "Submit" %>
<% end %>
型号:
class Item < ApplicationRecord
has_many :photos, as: :imageable, dependent: :destroy
end
class Photo < ApplicationRecord
include ImagesUploader::Attachment(:image)
belongs_to :imageable, polymorphic: true
validates_presence_of :image
end
控制器:
class ItemsController < ApplicationController
def new
@item = current_user.items.new
end
def create
@item = current_user.items.create(item_params)
@item.save
end
private
def item_params
params.require(:item).permit(:title, photos_attributes: { image: [] })
end
end
【问题讨论】:
-
2020 年推荐使用 active_storage 在 Ruby on Rails 中上传文件edgeguides.rubyonrails.org/active_storage_overview.html#
-
@Yshmarov Active Storage 一旦你开始使用它就很糟糕。它即时生成版本(为什么有人想在生产中执行此操作超出了我的范围),它减少了对 S3 中存储的控制,并且执行了不必要的数据库查询。这样不好。各地的专业推荐都是去神社。
标签: ruby-on-rails shrine uppy