Carrierwave:参数错误 Nil 提供的位置。无法在 Rails 上使用载波 Ruby 为 image_tag 构建 URI
Carrierwave: Argument Error Nil location provided. Can't build URI for an image_tag using carrier wave Ruby on Rails
我在使用 image_tag 时收到 Nil 位置的参数错误。如何使 image_tag 可选,只有在有相应图像时才会显示?这是 Ruby 在 Rails 5.
这是我当前的展示页面浏览量:
<p id="notice"><%= notice %></p>
<%= image_tag @restaurant.image_url %>
<p>
<strong>Name:</strong>
<%= @restaurant.name %>
</p>
<p>
<strong>Address:</strong>
<%= @restaurant.address %>
</p>
<p>
<strong>Phone:</strong>
<%= @restaurant.phone %>
</p>
<p>
<strong>Website:</strong>
<%= @restaurant.website %>
</p>
<%= link_to 'Edit', edit_restaurant_path(@restaurant), class: 'btn btn-link' %> |
<%= link_to 'Back', restaurants_path, class: 'btn btn-link' %>
你有两个选择。
1) 仅在有图像要显示时渲染图像标签:
<% if @restaurant.image_url %>
<%= image_tag @restaurant.image_url %>
<% end %>
2) 为 image_url
字段提供默认值:
<%= image_tag @restaurant.image_url || default_image %>
最好在 model/presenter:
class Image < ApplicationModel
def image_url
super || default_image
end
end
class Image < ApplicationModel
attribute :image_url, default: default_image
end
使用if条件,如果有图片就显示,如果none,不报错
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
只是为了补充答案。
您可以为此使用 one-liner 代码:
<%= image_tag(@restaurant.image_url) if @restaurant.image_url%>
相当于:
<% if @restaurant.image_url? %>
<%= image_tag(@restaurant.image_url) %>
<% end %>
或
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
资源:Carrierwave - Making uploads work across form redisplays
就这些了。
希望对您有所帮助
此错误是因为 image_tag 参数为 nil:
<%= image_tag nil %> # Nil location provided. Can't build URI
我在使用 image_tag 时收到 Nil 位置的参数错误。如何使 image_tag 可选,只有在有相应图像时才会显示?这是 Ruby 在 Rails 5.
这是我当前的展示页面浏览量:
<p id="notice"><%= notice %></p>
<%= image_tag @restaurant.image_url %>
<p>
<strong>Name:</strong>
<%= @restaurant.name %>
</p>
<p>
<strong>Address:</strong>
<%= @restaurant.address %>
</p>
<p>
<strong>Phone:</strong>
<%= @restaurant.phone %>
</p>
<p>
<strong>Website:</strong>
<%= @restaurant.website %>
</p>
<%= link_to 'Edit', edit_restaurant_path(@restaurant), class: 'btn btn-link' %> |
<%= link_to 'Back', restaurants_path, class: 'btn btn-link' %>
你有两个选择。
1) 仅在有图像要显示时渲染图像标签:
<% if @restaurant.image_url %>
<%= image_tag @restaurant.image_url %>
<% end %>
2) 为 image_url
字段提供默认值:
<%= image_tag @restaurant.image_url || default_image %>
最好在 model/presenter:
class Image < ApplicationModel
def image_url
super || default_image
end
end
class Image < ApplicationModel
attribute :image_url, default: default_image
end
使用if条件,如果有图片就显示,如果none,不报错
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
只是为了补充答案。
您可以为此使用 one-liner 代码:
<%= image_tag(@restaurant.image_url) if @restaurant.image_url%>
相当于:
<% if @restaurant.image_url? %>
<%= image_tag(@restaurant.image_url) %>
<% end %>
或
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
资源:Carrierwave - Making uploads work across form redisplays
就这些了。
希望对您有所帮助
此错误是因为 image_tag 参数为 nil:
<%= image_tag nil %> # Nil location provided. Can't build URI