所以我在我的应用程序中发现了这个看起来很奇怪的错误。我将用户头像称为背景图像,如下所示:
<span class="user-image" style="background-image:url(<%= avatar_tiny(current_user) %>);"></span>
avatar_tiny是一个帮助程序,它应该返回用户头像的路径或默认图像的路径:
def avatar_tiny(user)
if user.contact.avatar?
user.contact.avatar.url(:tiny)
else
'assets/avatar_default_tiny.png'
end
end
它在主页上工作正常。但是当我转到任何子页面时,Rails 以某种方式自动更改此路径,将其名称添加到此字符串中。例如"/配置文件/资产/avatar_default_tiny.png
我在 rails 控制台中收到此错误:
Started GET "/profile/assets/avatar_default_tiny.png" for 127.0.0.1 at 2019-02-10 05:32:51 +0100
ActionController::RoutingError (No route matches [GET] "/profile/assets/avatar_default_tiny.png"):
为什么会发生这种情况,我该如何解决?
应使用 asset_path
帮助程序获取默认图像的相对位置。将帮助程序的 else 语句更改为asset_path('avatar_default_tiny.png')