2012-11-11 79 views
0

我有一個用戶模型,事件模型和資產模型。到達關聯集合

用戶可以有多個事件。 一個事件可以有多個資產(圖片)

現在我想要做的是在頁面上顯示一個(任何)事件圖像。目前我有以下。

控制器

@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 %> 

「路徑」 是包含圖像路徑的資產表中的字符串字段。我現在正在收到以下錯誤消息。

undefined method `path' for nil:NilClass 

任何想法?謝謝!

+0

你確定你有一些資產回來了?也許它是空的。 –

+0

是正確的,表格是空的,但我認爲我在我的if語句中解釋了這一點。當用戶首次註冊時,他們不會有任何圖像。 – bjoern

回答

2

問題是,當不存在與事件相關聯的資產,的e.assets值將是一個空的數組,而不是nil。所以發生了什麼事是e.assets通過nil?有條件,那麼你拿e.assets.first這是nil(因爲該數組是空的),然後你嘗試調用path顯然不工作。

要解決該問題,只是改變:

<% if e.assets.nil? %> 

到:

​​