【问题标题】:Carrierwave on Rails 5.1 uploader instanceCarrierwave on Rails 5.1 上传器实例
【发布时间】: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


    【解决方案1】:

    如果我们看一下 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
    

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 2013-01-31
      相关资源
      最近更新 更多