我刚刚升级到Rails 5,在尝试显示图像时我遇到了一个奇怪的问题。
我有Rails 4的确切代码:
<%= image_tag article.image_url(:thumb) %>
但升级后我得到:
nil is not a valid asset source
在升级到Rails 5之前,我没有任何类似的问题。
这里有什么问题?它可以是其他东西而不是Rails升级问题吗?
答案 0 :(得分:19)
问题在于我试图显示不存在的图像。
添加unless article.image.blank?
解决了它:
<%= image_tag article.image_url(:thumb) unless article.image.blank? %>
编辑:在 Rails 4 中,这只会在没有错误的情况下呈现任何内容,而在 Rails 5 会引发错误。事实上,这是一个升级问题。
非常感谢@BookOfGreg指出这一点。
答案 1 :(得分:9)
我不知道这是否是紧凑的解决方案,但这段代码可行。
在您的上传器中激活后备方法。
def default_url
"/assets/fallback/" + [version_name, "default.png"].compact.join('_')
end
希望这会对你有所帮助。
干杯(y)
答案 2 :(得分:0)
尝试使用此功能,您需要在代码中添加除非条件。您需要添加以下代码
&lt;%= image_tag article.image_url(:thumb)除非article.image.blank? %GT;
答案 3 :(得分:0)
希望这段代码能够帮助未来的读者。
<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>
没有[除非是image.picture.url.blank?]代码,“nil不是有效的资源来源”会在上传空白图片时显示。