Ruby on rails Carrierwave:Can';t将图像解析为URL:undefined method`to#u model';

Ruby on rails Carrierwave:Can';t将图像解析为URL:undefined method`to#u model';,ruby-on-rails,ruby,carrierwave,Ruby On Rails,Ruby,Carrierwave,我收到这个错误: Can't resolve image into URL: undefined method `to_model' for #<PortfolioUploader:0x007fd1538a2a60> Did you mean? to_xml 你知道我遗漏了什么吗?我想应该是吧 <%= image_tag portfolio_item.thumb_image.url unless portfolio_item.thumb_image.nil? %>

我收到这个错误:

Can't resolve image into URL: undefined method `to_model' for #<PortfolioUploader:0x007fd1538a2a60>
Did you mean?  to_xml
你知道我遗漏了什么吗?

我想应该是吧

<%= image_tag portfolio_item.thumb_image.url unless portfolio_item.thumb_image.nil? %>

我通常是这样做的

<%= image_tag(portfolio_item.thumb_image_url) unless portfolio_item.thumb_image.nil? %>

即使在没有上传图像的情况下,这项功能也应该非常适合您:

<%= image_tag(portfolio_item.thumb_image_url) if portfolio_item.thumb_image_url %>

注意:if语句用于避免在没有图像或已上载图像时出错

就这些


我希望这对您有所帮助

如果您刚刚升级到Rails 5.2,
image\u标签的行为在Rails 5.1和5.2之间发生了变化

在Rails 5.1中,您可以传递uploader对象,如所问的问题:

# Rails 5.1
image_tag(portfolio_item.thumb_image)
但是在Rails 5.2中,
image\u标签
现在需要一个url:

# Rails 5.2
image_tag(portfolio_item.thumb_image_url)

哪一行代码导致错误?
<%= image_tag(portfolio_item.thumb_image_url) if portfolio_item.thumb_image_url %>
# Rails 5.1
image_tag(portfolio_item.thumb_image)
# Rails 5.2
image_tag(portfolio_item.thumb_image_url)