【发布时间】:2018-10-07 05:20:19
【问题描述】:
我按照载波指令,我做了rails generate uploader Attachment,但是当我这样做时
uploader = AttachmentUploader.new
uploader.store!(my_file)
它不会上传 my_file 附件。我不想将 my_file 字符串存储在数据库中
【问题讨论】:
标签: ruby-on-rails ruby carrierwave
我按照载波指令,我做了rails generate uploader Attachment,但是当我这样做时
uploader = AttachmentUploader.new
uploader.store!(my_file)
它不会上传 my_file 附件。我不想将 my_file 字符串存储在数据库中
【问题讨论】:
标签: ruby-on-rails ruby carrierwave
如果我们看一下 CarrierWave 的文档
https://github.com/carrierwaveuploader/carrierwave/blob/master/README.md#multiple-file-uploads
我将使用 Product 作为我要添加图片的模型,作为示例。 获取主分支 Carrierwave 并将其添加到您的 Gemfile:
gem 'carrierwave', github:'carrierwaveuploader/carrierwave'
在预期模型中创建一个列来托管图像数组:
rails generate migration AddPicturesToProducts pictures:json
运行迁移
bundle exec rake db:migrate
为模型产品添加图片
app/models/product.rb
class Product < ActiveRecord::Base
validates :name, presence: true
mount_uploaders :pictures, PictureUploader
end
在 ProductsController 中为强参数添加图片
app/controllers/products_controller.rb
def product_params
params.require(:product).permit(:name, pictures: [])
end
允许您的表单接受多张图片
app/views/products/new.html.erb
# notice 'html: { multipart: true }'
<%= form_for @product, html: { multipart: true } do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
# notice 'multiple: true'
<%= f.label :pictures %>
<%= f.file_field :pictures, multiple: true, accept: "image/jpeg, image/jpg, image/gif, image/png" %>
<%= f.submit "Submit" %>
<% end %>
在您的视图中,您可以引用解析图片数组的图像:
@product.pictures[1].url
【讨论】: