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
Rails_blob_path
pour les pièces jointes dans un contrôleur et des modèlesPar 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
J'ai pu voir l'image dans le navigateur en utilisant les éléments suivants:
<%= link_to image_tag(upload.variant(resize: "100x100")), upload %>
Où upload
est une image jointe.