Carrierwave:无法将图像解析为 URL:未定义的方法“to_model”

4 ruby ruby-on-rails carrierwave

我收到此错误:

Can't resolve image into URL: undefined method `to_model' for #<PortfolioUploader:0x007fd1538a2a60>
Did you mean?  to_xml
Run Code Online (Sandbox Code Playgroud)

我正在使用carrierwave rails,当我检查我的表单时,如下所示:

  <% @portfolios.each do |portfolio_item| %>
  <p><%= portfolio_item.title %> </p>
  <p><%= image_tag portfolio_item.thumb_image unless portfolio_item.thumb_image.nil? %> </p>
  <p><%= portfolio_item.body %> </p>
  <p><%= link_to "Edit", edit_portfolio_path(portfolio_item) if logged_in?(:site_admin)%></p>
  <p><%= link_to "Delete", portfolio_path(portfolio_item), method: :delete, data: { confirm: 'Are you sure?' } if logged_in?(:site_admin)%></p>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

在我的表格上:

<%= render 'form', portfolio: @portfolio %>




 <div class="field">
    <%= f.file_field :main_image %>
  </div>

  <div class="field">
    <%= f.file_field :thumb_image %>
 </div>
Run Code Online (Sandbox Code Playgroud)

在我的模型上,我放了 ff:

  mount_uploader :thumb_image, PortfolioUploader
  mount_uploader :main_image, PortfolioUploader
Run Code Online (Sandbox Code Playgroud)

知道我错过了什么吗?

jib*_*i31 12

image_tag如果您刚刚升级到 Rails 5.2,则 Rails 5.1 和 5.2 之间的行为会发生变化。

在 Rails 5.1 中,您可以传递上传者对象,就像所提出的问题一样:

# Rails 5.1
image_tag(portfolio_item.thumb_image)
Run Code Online (Sandbox Code Playgroud)

但在 Rails 5.2 中,image_tag现在需要一个 url:

# Rails 5.2
image_tag(portfolio_item.thumb_image_url)
Run Code Online (Sandbox Code Playgroud)


Vas*_*isa 8

我想应该是

<%= image_tag portfolio_item.thumb_image.url unless portfolio_item.thumb_image.nil? %>
Run Code Online (Sandbox Code Playgroud)