0

ユーザー モデル、イベント モデル、アセット モデルがあります。

ユーザーは複数のイベントを持つことができます。イベントには複数のアセット (画像) を含めることができます

今私がやろうとしているのは、ページに 1 つの (任意の) イベント画像を表示することです。現在、私は以下を持っています。

コントローラ

@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

何か案は?ありがとう!

4

1 に答える 1

2

問題は、イベントに関連付けられたアセットがない場合、 の値がe.assetsではなく空の配列になることnilです。したがって、何が起こっているかというと、条件をe.assets渡し、 (配列が空であるため) を取得し、明らかに機能しないものを呼び出してみます。nil?e.assets.firstnilpath

問題を修正するには、次のように変更します。

<% if e.assets.nil? %> 

に:

<% if e.assets.empty? %>
于 2012-11-11T01:48:54.623 に答える