如何从其他表中显示当前视图的数据

时间:2012-04-08 17:16:23

标签: ruby-on-rails ruby

我有两张桌子:

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

ArtistChordChord,因此Artist属于Chord

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

这是<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> 的index.html.erb的代码:

{{1}}

错误消息是:

  

未定义的方法`artist'代表nil:NilClass

实际上,起初它起作用了,但是当我开始创建“new.html.erb”页面以及创建和新动作时,它停止了工作,这就是为什么这对我来说太混乱了!

3 个答案:

答案 0 :(得分:0)

由于chort.artist可以为null,因此您应将chord.artist.artist更改为chord.artist.try(:artist),这是

的简写
if chord.artist.nil?
  nil
else
  chord.artist.artist
end

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

在视图中没有正确的位置,但您需要做的是找到具有此类CHORDS中给出的ID的艺术家

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

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

   @currentArtist.artist

希望它有所帮助。