Lorsque l'image de l'utilisateur a été modifiée, il était difficile de dire si le fichier a été soulevé mais clairement changé, j'ai donc utilisé jQuery pour afficher un bon aperçu (je ne suis pas bon à la réception ...).
ruby 2.6.3 rails 6.0.3 Uploader ActiveStorage jQuary
Avant de télécharger le fichier: prévisualiser l'affichage des images déjà liées à l'utilisateur Après le téléchargement du fichier: masquer l'affichage de l'image déjà associée à l'utilisateur, Aperçu du nouveau fichier image
users ①edit.html.slim ②_form.html.slim (Seule la partie du formulaire est découpée et utilisée. Il n'y a pas de problème même si vous écrivez tout en édition.) ③javascripts/app/users/edit.js
edit.html.slim
- content_for :title
= I18n.t 'helpers.title.edit', model: t_model(:user), name: @user.name
== render 'form', model: @user
_form.html.slim
= render 'shared/validation_messages', model: model
= simple_form_for model, html: { class: 'form-horizontal js-editing' } do |f|
.page-content.container.profile_edit
.card
.card-header
h5.card-title
|Informations de base
.card-body.p-3.ibox-content
.no-padding.no-margins
.circle-avatar
img src="#" id="avatar_img_prev" class="d-none"
- if model.image.attached?
= image_tag(model.image, class: 'avatar_present_img')
- else
= image_tag("defaurt-user.png ", class: "avatar_present_img")
|
br
= f.file_field :image, id: "post_img"
= f.input :name, placeholder: 'Hanako Yamada'
/Ce qui suit est omis
javascripts/app/users/edit.js
/* global $ */
$(function() {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#avatar_img_prev').attr('src', e.target.result);
};
reader.readAsDataURL(input.files[0]);
}
}
$("#post_img").change(function(){
$('#avatar_img_prev').removeClass('d-none');
$('.avatar_present_img').remove();
readURL(this);
});
}());
・ La façon d'écrire ʻimgen notation mince n'est pas ʻimg src: "~~", id: "~~"
, mais ʻimg src =" ~~ "id =" ~~ "` (rarement) Je n'ai pas compris parce que je ne l'ai pas écrit ...).
・ Puisque la classe de ʻimg src = "#" id = "avatar_img_prev" class = "hidden" n'était pas bien reflétée, elle a été changée en
class =" d-none "` → Cela a fonctionné.
-Depuis que jQuary a été écrit sur form.slim et n'a pas été bien reflété, il a été correctement réécrit dans le fichier js.
[Rails5] Prévisualisez immédiatement l'image téléchargée
Sortie de l'application Web tsunagaru [4] Migration d'ActiveStorage vers CarrierWave
Explication détaillée de l'utilisation de la classe d'affichage Bootstrap4