Problème avec les Url pour les vignettes créées à l'aide de Sanctuaire plugin sur des Rails 6

0

La question

J'ai été aux prises avec ce pour un couple de jours et en espérant que quelqu'un peut vous aider. Il y a peut être quelque chose d'évident qui me manque!

Je suis à l'aide de Sanctuaire plugin pour les Rails de téléchargement de fichiers PDF et de générer une miniature de la première page. Le PDF est en cours de chargement dans l'espace de stockage et de la vignette est également se créé et se triées dans le même emplacement. Cependant, je ne suis pas capable d'afficher la vignette dans la vue.

Initialiseur:

require "shrine"
require "shrine/storage/file_system"
#require "shrine/storage/memory"

Shrine.storages = {
    cache: Shrine::Storage::FileSystem.new("public", prefix: "uploads/cache"),
    store: Shrine::Storage::FileSystem.new("public", prefix: "uploads/store")
}

Shrine.plugin :activerecord    # loads Active Record integration
Shrine.plugin :cached_attachment_data # enables retaining cached file across form redisplays
Shrine.plugin :restore_cached_data  # extracts metadata for assigned cached files
Shrine.plugin :determine_mime_type
Shrine.plugin :validation_helpers
Shrine.plugin :validation
Shrine.plugin :derivatives
#Shrine.plugin :model, cache: false

Uploader:

require "image_processing/mini_magick"

class FileUploader < Shrine
 include ImageProcessing::MiniMagick

 plugin :processing # allows hooking into promoting
 plugin :versions   # enable Shrine to handle a hash of files
 plugin :derivatives
 plugin :default_url
# plugin :delete_raw # delete processed files after uploading

 Attacher.validate do
  validate_max_size 5*1024*1024, message: "is too large (max is 5 MB)"
  validate_mime_type %w[application/pdf]
 end

 Attacher.derivatives do |original|
  magick = ImageProcessing::MiniMagick.source(original).loader(page:0).convert("jpeg")
  {
   thumb: magick.resize_to_limit!(200, 200) 
  }

 end

end

Test De La Vue:

<p id="notice"><%= notice %></p>

<p>
  <strong>Number:</strong>
  <%= @issue.number %>
</p>

<p>
  <strong>Title:</strong>
  <%= @issue.title %>
</p>

<p>
  <strong>Data:</strong>
  <%= @issue.file_data %>
</p>

<p>
  <strong>Issue Preview</strong>
  <embed src="<%= @issue.file_url %>" width="80" height="160" />
</p>

<p>
  <strong>Issue Thumbnail:</strong>
  <%= image_tag @issue.file_url(:thumb) if @issue.file %>
</p>

<p>
  <strong>Issue:</strong>
  <%= image_tag @issue.file_url if @issue.file %>
</p>

<%= link_to 'Edit', edit_issue_path(@issue) %> |
<%= link_to 'Back', issues_path %>

Aussi, quand je regarde les données stockées dans la file_data champ, je ne vois aucune information ajoutée pour la miniature.

Fichier de Données: {"id":"fccd20a9323aa5b63fd912f4ca833ebb.pdf","storage":"store","metadata":{"filename":"pdf_sample.pdf","size":351987,"mime_type":"application/pdf"}}

pdf ruby-on-rails shrine thumbnails
2021-11-20 21:41:41
2
0

Vous avez besoin d'activer la création automatique sur l'attachement à la promotion de stockage permanent:

Shrine.plugin :derivatives, create_on_promote: true

Ou de traiter les dérivés manuellement sur la pièce jointe:

record.file_derivatives!
2021-11-21 19:40:25

Merci pour votre réponse rapide. J'ai essayé le traitement des produits dérivés des moyens que vous avez suggéré ci-dessus et de la vignette est créée et financée avec le pdf en pièce jointe sans problème. Je peux aussi appeler l'accès à l'URL du fichier dans mon point de vue par @question.file_url. La seule chose qui ne fonctionne pas pour moi, c'est l'URL de la vignette @question.file_url(:pouce). les données pour la miniature est aussi ne pas stocker dans la file_data colonne: {"id":"a94c1a6e31176ed530b786ef3cefe18a.pdf","storage":"store","metadata":{"filename":"comic_sample.pdf","size":351987,"mime_type":"application/pdf"}}.
user1851592

Les dérivés des données manquantes à partir de la colonne désigne la dérivée n'est pas généré, et c'est pourquoi l'URL est nul. Parce que vous avez posté votre installation sans create_on_promote: true réglage, et vous n'avez pas de montrer la création de produits dérivés explicitement, je suppose que ce n'était tout simplement pas appelé.
janko-m

Merci encore, ill ont un oeil à mes à nouveau les paramètres. Petite question: comment est la miniature se produit si les Attacher.les dérivés n'est pas appelée?
user1851592
0

Finalement pensé à elle. J'ai résolu le problème en ajoutant le texte suivant à la _form.html.erb:

<%= form.hidden_field :image, value: @photo.cached_image_data %>
2021-12-08 23:46:19

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................