Mit Active Storage können Sie Methoden verwenden, die das Hochladen von Dateien wie Bildern erleichtern, und Sie können problemlos Tabellen zum Speichern von Bildern erstellen.
Zunächst werden wir das für die Bildverarbeitung erforderliche Bildkonvertierungswerkzeug und das Juwel vorstellen, um es von Rails verfügbar zu machen. Mit ImageMagic können Sie das Speicherformat von Bildern über die Befehlszeile erstellen, in der Größe ändern und ändern. Führen Sie den folgenden Befehl aus.
brew install imagemagick
ImageMagic ist kein Juwel. Um mit Ruby oder Rails umgehen zu können, müssen Sie ein Juwel namens MiniMagick installieren. MiniMagic ist ein Juwel, mit dem ImageMagic in Ruby verwendet werden kann. Installieren Sie als Nächstes den Edelstein, um die Bildgröße zu ändern. Die Bildverarbeitung ist ein Juwel, das eine Funktion zum Anpassen der Bildgröße bietet, die mit MiniMagic nicht möglich ist. Fügen Sie es wie folgt am unteren Rand der Gemfile hinzu. Führen Sie dann die Bundle-Installation mit dem Befehl aus.
gemfile
gem 'mini_magick'
gem 'image_processing', '~> 1.2'
Gehen Sie im Terminal wie folgt vor:
rails active_storage:install
Nachdem die Migration für Active Storage erstellt wurde, gehen Sie wie folgt vor:
rails db:migrate
Legen Sie die Zuordnungsdefinition fest und speichern Sie die Berechtigung für die Bildspalte zum Speichern von Bildern in Active Storage-Tabellen. Dieses Mal habe ich die Methode has_one_attached verwendet, um eine Bilddatei anzuhängen.
app/models/post.rb
class Post < ApplicationRecord
~Abkürzung~
has_one_attached :image
~Abkürzung~
end
Die Bilddatei ist jetzt mit der Beitragstabelle verknüpft. ** Zu diesem Zeitpunkt müssen der Beitragstabelle keine Spalten hinzugefügt werden. ** ** **
Fügen Sie dann dem starken Parameter ein Bild hinzu, damit die Bilddatei gespeichert werden kann.
app/controllers/posts_controller.rb
class PostsController < ApplicationController
~Abkürzung~
def post_params
params.require(:post).permit(:name, :image, :price, :evaluation, :description, :category_id, :shop_name).merge(user_id: current_user.id)
end
~Abkürzung~
end
Zeigen Sie das Bild mit der image_tag-Methode an, einer Hilfsmethode von Rails.
<%= image_tag post.image, class: "post-img" %>
Sie können die angehängte Methode verwenden, um Fehler zu vermeiden, wenn das Bild nicht vorhanden ist.
<%= image_tag @post.image ,class:"user-box-img" if @post.image.attached? %>
Wenn Sie wie oben schreiben, wird image_tag nur gelesen, wenn das Bild vorhanden ist.
Wenn Sie Active Storage installiert haben, können Sie die Variantenmethode verwenden. Sie können die Anzeigegröße der Bilddatei mithilfe der Variantenmethode angeben.
<%= image_tag post.image.variant(resize: '500x500'), class: "post-img" %>
Recommended Posts