Rails 5,“nil不是有效的资产来源”

问题描述 投票:17回答:4

我刚刚升级到Rails 5,在尝试显示图像时我遇到了一个奇怪的问题。

我有Rails 4的确切代码:

<%= image_tag article.image_url(:thumb) %>

但升级后,我得到:

nil is not a valid asset source

在升级到Rails 5之前,我没有任何类似的问题。

这可能有什么问题?它可以是其他东西而不是Rails升级问题吗?

ruby-on-rails ruby ruby-on-rails-5
4个回答
20
投票

问题是我试图显示一个不存在的图像。

添加unless article.image.blank?解决了它:

<%= image_tag article.image_url(:thumb) unless article.image.blank? %>

编辑:在Rails 4中,这只会在没有错误的情况下呈现任何内容,而在Rails 5中它会引发错误。事实上,这是一个升级问题。

非常感谢@BookOfGreg指出这一点。


9
投票

我不知道这是否是紧凑的解决方案,但这段代码将起作用。

激活上传器中的后备方法。

  def default_url
    "/assets/fallback/" + [version_name, "default.png"].compact.join('_')
  end

希望这会帮助你。

干杯(y)


0
投票

试试这个,你需要添加除非代码中的条件。您需要添加以下代码

<%= image_tag article.image_url(:thumb)除非article.image.blank? %>


0
投票

希望这个片段能够帮助未来的读者。

<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>

没有那个[除非是image.picture.url.blank?]代码,“nil不是有效的资产来源”会在上传空图像时出现。

© www.soinside.com 2019 - 2024. All rights reserved.