Файлы из ActiveStorage не отображаются с ошибкой «Отсутствует шаблон» - PullRequest
0 голосов
/ 03 декабря 2018

Rails v5.2.1;Файлы загружаются в приватное хранилище AWS с использованием DirectUpload, но я не думаю, что это моя проблема.

У меня есть модель User, которая содержит has_one_attached :avatar.Изображение загружено без проблем;Я вижу это в своем ведре и в таблицах ActiveStorage в моей БД.

Позже я пытаюсь отобразить загруженный аватар следующим образом:

<%= image_tag url_for(current_user.avatar) %>
(I've also tried this):
<img src="<%= url_for(current_user.avatar) -%>" />

Это генерирует URL, что-то вроде http://localhost:3000/rails/active_storage/blobs/[a hash, I assume]/[my file name].png

Однако ... изображение не отображается.Если я пытаюсь открыть изображение в новой вкладке, я получаю страницу с ошибкой "Шаблон отсутствует".

Missing template /application with {:locale=>[:en], :formats=>[:png], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in: * "/Users/matt/projects/project/app/views" * "/Users/matt/.rvm/gems/ruby-2.5.1/gems/kaminari-core-1.1.1/app/views" * "/Users/matt/.rvm/gems/ruby-2.5.1/gems/devise-4.4.3/app/views"

Extracted source:

def index
  render template: 'application'
end

Теперь ... У меня определенно есть шаблон application.html, но, похоже, этоищу шаблон application.png, который кажется неправильным.Чего мне не хватает?

1 Ответ

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

Вид

<%= image_tag url_for(current_user.avatar_url) %>

Модель пользователя

#user.rb
class User < ApplicationRecord
    #...
    def avatar_url
      if self.avatar.attached?
        Rails.application.routes.url_helpers.rails_blob_path(self.avatar, only_path: true)
        #or
        self.avatar.service_url
      else
        nil
      end
    end
end
...