0

我有两张桌子:

Chords -     |id|chord|name|rating|artist_id|
Artists -    |id|artist|

AnArtist有许多Chords,因此 aChord属于 a Artist

在“和弦”的索引页面中,我想显示和弦表中的和弦、名称和评分以及艺术家表中的艺术家

这是Chordindex.html.erb 的代码:

<table border="1">
  <% @chords.each do |chord| %>
    <tr>
       <td><%= chord.artist.artist %></td>
       <td><%= link_to chord.name, chord %></td>
       <td><%= chord.rating %></td>
       <td><%= chord.created_at %></td>
    </tr>
  <% end %>
</table>

错误信息是:

nil:NilClass 的未定义方法“艺术家”

实际上,起初它可以工作,但是当我开始创建“new.html.erb”页面以及创建和新操作时,它停止工作,这就是为什么这让我如此困惑!

4

3 回答 3

0

由于chort.artist可以为空,因此您应该更改chord.artist.artistchord.artist.try(:artist)which 的简写

if chord.artist.nil?
  nil
else
  chord.artist.artist
end
于 2012-04-08T17:52:48.767 回答
0

你可以使用 <td><%= chord.artist.artist unless chord.artist.artist.nil? %></td>

于 2012-04-08T17:58:59.563 回答
-1

在视图中没有合适的位置,但您需要做的是找到具有 CHORDS 中给出的 ID 的艺术家,如下所示

   @currentArtist = Artist.find(:all, :conditions => {:protectora => Chord.artist_id})

然后,当您通过 CHORD 中给出的 ID 找到它并将其保存到变量中时,您可以像访问任何其他变量一样访问它,因此:

   @currentArtist.artist

希望能帮助到你。

于 2012-04-08T17:37:46.097 回答