使用活动存储上传的图像未显示在视图中

jgk*_*jgk 3 ruby-on-rails rails-activestorage

我正在尝试使用ActiveStorage将 Rails 应用程序升级到 RoR6 。\n在视图中,我image_tag在所附图像上使用了名为“whiteboard_background”的图像@project

\n\n

它在浏览器中显示损坏的链接:\n链接

\n\n

环境:开发和本地存储的文件

\n\n

模型:

\n\n
class Project < ApplicationRecord\n\n  has_one_attached :whiteboard_background\n
Run Code Online (Sandbox Code Playgroud)\n\n

查看代码:

\n\n
attachment: <%= @project.whiteboard_background.attached? %>\n<p>image:\n<%= image_tag @project.whiteboard_background if @project.whiteboard_background.attached? %>\n</p>\n
Run Code Online (Sandbox Code Playgroud)\n\n

服务器:

\n\n
Started GET "/projects/6" for 127.0.0.1 at 2020-02-19 20:29:27 +0100\nProcessing by ProjectsController#show as HTML\n  Parameters: {"id"=>"6"}\n...\nActiveStorage::Attachment Load (2.8ms)  SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" = $1 AND "active_storage_attachments"."record_type" = $2 AND "active_storage_attachments"."name" = $3 LIMIT $4  [["record_id", 6], ["record_type", "Project"], ["name", "whiteboard_background"], ["LIMIT", 1]]\n  \xe2\x86\xb3 app/views/projects/show.html.erb:94\n  ActiveStorage::Blob Load (0.6ms)  SELECT "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = $1 LIMIT $2  [["id", 13], ["LIMIT", 1]]\n  \xe2\x86\xb3 app/views/projects/show.html.erb:96\n  Location Load (0.5ms)  SELECT "locations".* FROM "locations" ....\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经检查过@project.whiteboard_background.attached?,并且true在控制台中Project.last.whiteboard_background.metadata给出了正确的图像数据,这表明上传工作正常。

\n\n

Firefox 检查器确实显示了带有源路径的元素,但显示“无法加载图像”。Chrome 中的行为相同

\n\n

如果我从头开始在空白测试应用程序中重复该过程,它工作正常并且我可以显示图像。

\n\n

任何想法?

\n

jgk*_*jgk 7

该错误是由于我的铁路路线末尾的以下“catch all”造成的: get "*path", to: redirect('/')

由于强制重定向到根目录,浏览器似乎无法使用活动存储给出的 URL 加载图像。使用以前的上传方法(载波)这不是问题

从routes.rb 中删除这一行修复了它。