Как отобразить вариант изображения с Active Storage в окне JS? - PullRequest
0 голосов
/ 07 декабря 2018

На мой взгляд, я могу отобразить свой файл, прикрепленный к модели с Active Storage, во всплывающем окне, например:

<a href="<%= rails_blob_path(@image.file, disposition: 'inline') %>" rel="example_group"><%= image_tag @image.variant('small') %></a>

Это работает хорошо.

enter image description here

Проблема в том, что я хочу использовать вариант в ссылке:

<a href="<%= url_for(@image.variant('high')) %>" rel="example_group"><%= image_tag @image.variant('small') %></a>

Используемый код варианта:

file.variant(resize:size).processed.service_url

Ссылка кажетсячтобы быть хорошим, но когда я нажимаю на изображение, изображение не открывается в моем всплывающем окне JS, как раньше, а открывается в новом окне браузера.Это очень странно

Я сократил ссылку.

https://bucket.s3.eu-west-3.amazonaws.com/variants/MmsLY3rf8yR9/38a77a69d170464c472f6d36fb3fbc28b284af0cadaa533?response-content-disposition=inline%3B%20filename%3D%22chateau.jpeg%22%3B%20filename%2A%3DUTF-8%27%27chateau-lynch.jpeg&response-content-type=image%2Fjpeg&Signature=29fe7d85fe369ea2335fa8b333d4868d8c2f2c22e1efe

Является ли это проблемой "размещения контента"?

1 Ответ

0 голосов
/ 10 декабря 2018

Ну, вот что я сделал:

В моей модели Image я добавил действие и использовал метод rails_representation_url () из url_helpers:

include Rails.application.routes.url_helpers# это нужно для

  include Rails.application.routes.url_helpers 
  def get_variant(version="high", disposition="attachment")
    variant = file_variant(version)
    return rails_representation_url(variant, only_path: true, disposition: disposition)
  end

В моем html я могу вызвать мой метод с расположением вложений:

<a href="<%= @image.get_variant('high', 'attachment') %>" rel="example_group">

Я также могу загрузить вариант изображения непосредственно из моего контроллера:

def download
    redirect_to @image.get_variant('high', 'attachment')
end

Если вы хотите отобразить только вариант в окне браузера, вы можете использовать 'inline':

redirect_to @image.get_variant('high', 'inline')

Не уверен, что это лучший вариант, но он работает.

...