我有一个用户模型,事件模型和资产模型。
用户可以拥有多个活动。 一个事件可以有多个资产(图像)
现在我要做的是在页面上显示一个(任意)事件图像。目前我有以下内容。
控制器
@user = current_user
@events = @user.events
查看
<% @events.each do |e| %>
<li>
<% if e.assets.nil? %>
<%= image_tag("img36.jpg" , :size => "280x230") %>
<% else %>
<%=image_tag e.assets.first.path.url %>
<% end %>
<div class="bar">
<strong class="heading"><%= e.name %></strong>
<ul class="menu">
<li><a class="time" title="Time" href="#"><%= e.date %></a></li>
<li><a class="comments" title="Comments" href="#">53</a></li>
<li><a class="favourites" title="Favourites" href="#">87</a></li>
<li><a class="view" title="Views" href="#">242</a></li>
</ul>
</div>
<p><%= e.description %><a href="#">more »</a></p>
</li>
<% end %>
“path”是资产表中包含图像路径的字符串字段。我现在收到以下错误。
undefined method `path' for nil:NilClass
有什么想法吗?谢谢!
答案 0 :(得分:2)
问题是当没有与某个事件相关联的资源时,e.assets
的值将是一个空数组,而不是nil
。所以发生的事情是e.assets
传递nil?
条件,然后你取e.assets.first
nil
(因为数组是空的),然后你尝试调用{{ 1}}显然不起作用。
要解决问题,只需更改:
path
为:
<% if e.assets.nil? %>