进入相关集合

时间:2012-11-11 01:38:58

标签: ruby-on-rails-3

我有一个用户模型,事件模型和资产模型。

用户可以拥有多个活动。 一个事件可以有多个资产(图像)

现在我要做的是在页面上显示一个(任意)事件图像。目前我有以下内容。

控制器

@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 &raquo;</a></p>
 </li>
<% end %>

“path”是资产表中包含图像路径的字符串字段。我现在收到以下错误。

undefined method `path' for nil:NilClass

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

问题是当没有与某个事件相关联的资源时,e.assets的值将是一个空数组,而不是nil。所以发生的事情是e.assets传递nil?条件,然后你取e.assets.first nil(因为数组是空的),然后你尝试调用{{ 1}}显然不起作用。

要解决问题,只需更改:

path

为:

<% if e.assets.nil? %>