Avec Active Storage, vous pouvez utiliser des méthodes qui facilitent le téléchargement de fichiers tels que des images, et vous pouvez facilement créer des tableaux pour stocker des images.
Tout d'abord, nous présenterons l'outil de conversion d'image requis pour le traitement d'image et le gem pour le rendre disponible à partir de Rails. ImageMagic vous permet de créer, redimensionner et modifier le format d'enregistrement des images à partir de la ligne de commande. Exécutez la commande suivante.
brew install imagemagick
ImageMagic n'est pas une gemme, donc pour la gérer avec Ruby ou Rails, vous devez installer une gemme appelée MiniMagick. MiniMagic est un joyau qui permet à ImageMagic d'être utilisé dans Ruby. Ensuite, installez la gemme pour modifier la taille de l'image. Le traitement d'image est une gemme qui fournit une fonction pour ajuster la taille de l'image, ce qui n'est pas possible avec MiniMagic. Ajoutez-le au bas du gemfile comme suit. Ensuite, exécutez l'installation groupée avec la commande.
gemfile
gem 'mini_magick'
gem 'image_processing', '~> 1.2'
Dans le terminal, procédez comme suit:
rails active_storage:install
Maintenant que la migration liée à Active Storage est créée, procédez comme suit:
rails db:migrate
Définissez la définition d'association et enregistrez l'autorisation pour la colonne d'image de stocker des images dans des tables de stockage actif. Cette fois, j'ai utilisé la méthode has_one_attached pour joindre un fichier image.
app/models/post.rb
class Post < ApplicationRecord
~Abréviation~
has_one_attached :image
~Abréviation~
end
Le fichier image est maintenant lié à la table des articles. ** Pour le moment, il n'est pas nécessaire d'ajouter des colonnes à la table des publications. ** **
Ajoutez ensuite l'image au paramètre strong pour permettre l'enregistrement du fichier image.
app/controllers/posts_controller.rb
class PostsController < ApplicationController
~Abréviation~
def post_params
params.require(:post).permit(:name, :image, :price, :evaluation, :description, :category_id, :shop_name).merge(user_id: current_user.id)
end
~Abréviation~
end
Affichez l'image à l'aide de la méthode image_tag, qui est une méthode d'assistance de Rails.
<%= image_tag post.image, class: "post-img" %>
Vous pouvez utiliser la méthode ci-jointe? Pour éviter les erreurs lorsque l'image n'existe pas.
<%= image_tag @post.image ,class:"user-box-img" if @post.image.attached? %>
En écrivant comme ci-dessus, image_tag est en lecture uniquement lorsque l'image existe.
Si vous avez installé Active Storage, vous pouvez utiliser la méthode des variantes. Vous pouvez spécifier la taille d'affichage du fichier image à l'aide de la méthode des variantes.
<%= image_tag post.image.variant(resize: '500x500'), class: "post-img" %>
Recommended Posts