我的 Ruby on Rails 应用程序中有这两个模型——Artist 和 Song。它们的关联如下:
类艺术家 < ActiveRecord::Base
has_many :歌曲
attr_accessible :artist_name
和
类 Song < ActiveRecord::Base
属于_to:艺术家
attr_accessible :title, :track_URL, :artist_id
我在views/artist/show.html.erb中有这段代码:
<%= render 'artist_song' %>
<table>
<% @artist.songs.each do |song| %>
<tr>
<td><%= song.title %></td>
</tr>
<% end %>
</table>
我试图在同一个视图中渲染(_artist_song.html.erb)的部分看起来像这样:
<table>
<% @artist = Artist.all %>
<% @artist.each do |artist| %>
<tr>
<td><%= link_to artist.artist_name, artist %></td>
</tr>
<% end %>
</table>
它的工作方式是当我单击通过部分显示的艺术家时,部分下面的代码必须向我显示属于特定艺术家的所有歌曲。table 标记中的 partial 和 code 都是单独工作的。但是当我把它们放在一起时,它们之间似乎存在冲突,并且服务器向我显示了这个 No Method Error:
NoMethodError in Artists#show
Showing C:/Sites/OML/app/views/artists/show.html.erb where line #9 raised:
undefined method `songs' for #<Array:0x5fe1418>
Extracted source (around line #9):
6:
7:
8: <table>
9: <% @artist.songs.each do |song| %>
10: <tr>
11: <td><%= song.title %></td>
12: </tr>
Rails.root: C:/Sites/OML
Application Trace | Framework Trace | Full Trace
app/views/artists/show.html.erb:9:in `_app_views_artists_show_html_erb__950110288_54062208'
app/controllers/artists_controller.rb:21:in `show'
我找不到解决方案。任何帮助将不胜感激。谢谢你。