使用image_tag时,出现Nil位置参数错误。如何使image_tag仅在存在相应图像时才显示的位置为可选?这是Ruby on 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' %>
答案 0 :(得分:4)
您有两个选择。
1)仅在有要显示的图像时才渲染图像标签:
<% if @restaurant.image_url %>
<%= image_tag @restaurant.image_url %>
<% end %>
2)为image_url
字段提供默认值:
<%= image_tag @restaurant.image_url || default_image %>
最好在模型/演示者中进行:
class Image < ApplicationModel
def image_url
super || default_image
end
end
或使用attribute API:
class Image < ApplicationModel
attribute :image_url, default: default_image
end
答案 1 :(得分:0)
使用if条件,如果有图像将显示,如果没有,则没有错误
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
答案 2 :(得分:0)
只需添加到答案中即可。
您可以为此使用单行代码:
<%= image_tag(@restaurant.image_url) if @restaurant.image_url%>
等效于:
<% if @restaurant.image_url? %>
<%= image_tag(@restaurant.image_url) %>
<% end %>
OR
<% if @restaurant.image_url? %>
<%= image_tag @restaurant.image_url %>
<% end %>
资源:Carrierwave - Making uploads work across form redisplays
仅此而已。
我希望这会有所帮助