it-swarm.com.ru

Как я могу получить URL моего вложения, хранящегося в активном хранилище в моем контроллере Rails

Как я могу получить URL моего вложения модели has_one, хранящегося в активном хранилище в моем контроллере Rails. Так что я мог бы отправить его как полную ссылку, как API в JSON. До сих пор я пробовал следующие методы, но каждый из них дает различные проблемы:

1) current_user.image.service_url ---- неопределенный метод `service_url 'для #

2) Rails.application.routes.url_helpers.Rails_disk_blob_path (current_user.image, only_path: true), это дает мне вывод вроде:

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

но это не URL, верно? Я не могу нажать и получить изображение в браузере.

3) url_for ----

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

Используйте метод Rails_blob_path для вложений в контроллере и моделях

Например, если вам нужно назначить переменную (например, cover_url) в контроллере, сначала вы должны включить url_helpers, а после использования метод Rails_blob_path с некоторыми параметрами. Вы можете сделать то же самое в любой модели, работника и т.д.

Завершите пример ниже:

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
1
Jonatas Eduardo Salgado

Я не использовал активное хранилище Rails, но то, что я прочитал в документации, может помочь

Попробуйте Rails_blob_url(model.image)

Для получения дополнительной информации http://edgeguides.rubyonrails.org/active_storage_overview.html

2
Ravi Mariya

Мне удалось просмотреть изображение в браузере, используя следующее: 

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

Где upload является прикрепленным изображением.

0
safikabis