web-dev-qa-db-fra.com

Comment puis-je obtenir l'URL de ma pièce jointe stockée dans la mémoire active de mon contrôleur Rails

Comment puis-je obtenir l'URL de ma pièce jointe modèle has_one stockée dans la mémoire active de mon contrôleur Rails. Donc, je serais capable de l’envoyer en tant que lien complet comme api dans json . Jusqu’à présent, j’ai essayé les méthodes suivantes, mais chacune d’elles donne plusieurs problèmes:

1) current_user.image.service_url ---- méthode non définie `service_url 'pour #

2) Rails.application.routes.url_helpers.Rails_disk_blob_path (current_user.image, only_path: true) , Il me donne un résultat tel que:

"/Rails/blobs/%23%3CActiveStorage::Attached::One:0x007f991c7b41b8%3E"

mais ce n'est pas une URL, non? Je ne suis pas capable de frapper et d'obtenir une image sur le navigateur.

3) url_for ---- 

undefined method `active_storage_attachment_url' for #<Api::V1::UsersController:0x007f991c1eaa98
4
Mobeen

Utilisez la méthode Rails_blob_path pour les pièces jointes dans un contrôleur et des modèles

Par exemple, si vous devez affecter une variable (par exemple, cover_url) dans un contrôleur, vous devez d’abord inclure url_helpers, puis utiliser la méthode Rails_blob_path avec certains paramètres. Vous pouvez faire la même chose dans n'importe quel modèle, travailleur, etc.

Exemple complet ci-dessous:

class ApplicationController < ActionController::Base

  include Rails.application.routes.url_helpers

  def index
    @event = Event.first
    cover_url = Rails_blob_path(@event.cover, disposition: "attachment", only_path: true)
  end

end

Je n'ai pas utilisé le stockage actif de Rails mais ce que j'ai lu dans la documentation pourrait vous aider

Essayez Rails_blob_url(model.image)

Pour plus http://edgeguides.rubyonrails.org/active_storage_overview.html

2
Ravi Mariya

J'ai pu voir l'image dans le navigateur en utilisant les éléments suivants: 

<%= link_to image_tag(upload.variant(resize: "100x100")), upload %>

upload est une image jointe.

0
safikabis