Скрепка не отображает изображение (рельсы API) - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть пользовательский модуль, и я сгенерировал прикрепление скрепки: profile_pic

user.rb:

has_attached_file :profile_pic,
style: { :medium => "300x300>", thumb: "100x100>" },
default_url: "/images/:style/missing.png"

контроллер:

image_base = params[:manager][:profile_pic]
if image_base != nil
   image = Paperclip.io_adapters.for(image_base)
   image.original_filename = params[:manager][:file_name]
   current_user.profile_pic = image
   current_user.errors.delete(:profile_pic)
   current_user.save 
end

config / initializer /paperclip.rb:

Paperclip::DataUriAdapter.register

Это не показывает каких-либо ошибок, но если я пытаюсь отобразить изображение, это дает мне следующую ошибку:

ActionController::RoutingError (No route matches [GET] "/system/managers/profile_pics/000/000/008/original/icon_new.png"):

Когда я пытаюсь в консоли, как:

user.profile_pic.display
/system/managers/profile_pics/000/000/008/original/icon_new.png? 
1556082410 => nil 

Изображение было сохранено в общей папке

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Проблема связана с производственным режимом и решена путем добавления следующей строки в production.rb

config.public_file_server.enabled = true
0 голосов
/ 24 апреля 2019

Папка по умолчанию следующая, поэтому Paperclip загружен в нужное место: :rails_root/public/system/:class/:attachment/:id_partition/:style/:filename

Но, похоже, у вас проблемы с доступом в нужное место.Вы пробовали user.profile_pic.url?Я попробовал на своем рабочем примере, и .display и .url одинаковы, но я использую ведро AWS S3.

user.profile_pic.url должно быть где найти файл в сети.

user.profile_pic.path должно быть где найти файл в файловой системе.

...