[RUBY] CarrierWave Télécharger plusieurs images

supposition

Avec image de colonne: chaîne pour carrierwave

teminal


$ rails g model Post title:string body:text image:string
$ rails db:migrate

la mise en oeuvre

Installation de gemmes

Gemfile


gem 'carrierwave'

terminal


$ bundle install

Création de l'uploader CarrierWave

terminal


$ rails g uploader image

Les fichiers suivants sont créés dans app / uploaders / image_uploader.rb.

image_uploader.rb


class ImageUploader < CarrierWave::Uploader::Base
  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :fog

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  # Provide a default URL as a default if there hasn't been a file uploaded:
  # def default_url(*args)
  #   # For Rails 3.1+ asset pipeline compatibility:
  #   # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png "].compact.join('_'))
  #
  #   "/images/fallback/" + [version_name, "default.png "].compact.join('_')
  # end

  # Process files as they are uploaded:
  # process scale: [200, 300]
  #
  # def scale(width, height)
  #   # do something
  # end

  # Create different versions of your uploaded files:
  # version :thumb do
  #   process resize_to_fit: [50, 50]
  # end

  # Add a white list of extensions which are allowed to be uploaded.
  # For images you might use something like this:
  # def extension_whitelist
  #   %w(jpg jpeg gif png)
  # end

  # Override the filename of the uploaded files:
  # Avoid using model.id or version_name here, see uploader/store.rb for details.
  # def filename
  #   "something.jpg " if original_filename
  # end
end

Lié au modèle Post avec le téléchargeur d'image créé précédemment

post.rb


  #ajouter à
  mount_uploaders :image, ImageUploader
  serialize :image, JSON

Contrôleur d'édition

Autoriser les paramètres forts à télécharger plusieurs fichiers

posts_controller.rb


  def post_params
    params.require(:post).permit(:title, :body, { image: [] })
  end

Modifier vue

Vous permet de sélectionner plusieurs feuilles.

ruby:new.html.erb


 #Multiple supplémentaire: true
 <%= f.file_field :image, multiple: true %>

Enfin, permettez d'afficher plusieurs images.

ruby:index.html.erb


 <% @post.image.each do |image| %>
   <%= image_tag(image.url) %>
 <% end %>

Recommended Posts

CarrierWave Télécharger plusieurs images
Téléchargez facilement plusieurs images avec rails rails + carrierwave + cloudinary
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
[Rails] Comment télécharger des images à l'aide de Carrierwave
[Ruby on Rails] Téléversement de plusieurs images avec refile
[Rails] Enregistrez des images à l'aide de carrierwave
Enregistrer et afficher plusieurs images
[Java] Téléchargez une image et convertissez-la en Base64
Téléchargement d'images à l'aide de CarrierWave ~ Test Rspec ~
télécharger l'image pour refiler heroku S3
[Rails] Comment télécharger des images sur AWS S3 à l'aide de Carrierwave et de fog-aws
Publier / supprimer plusieurs images avec Active Storage