【发布时间】:2013-12-31 18:36:41
【问题描述】:
更新
我有一个简单的 Rails 应用程序,其主页显示评分最高的专辑,在我的控制器中使用此代码(此解决方案中使用的代码:How to display highest rated albums through a has_many reviews relationship):
def home
@top_ratings = Album.joins(:reviews).select("*, avg(reviews.rating) as average_rating").group("albums.id").order("average_rating DESC")
@top_seven = @top_ratings[0...7]
end
在我的 home.html.erb 文件中,我正在显示每张专辑,并有一个 link_to 标记将用户带到专辑的显示页面:
<tbody>
<tr>
<% @top_seven.each do |album| %>
<td><%= link_to (image_tag album.picture, size: '150x150'), album_url(album) %> </td>
<% end %>
</tr>
</tbody>
数据看起来很好,但是当我单击链接时,我在专辑的显示页面上收到“nil:NilClass 的未定义方法‘名称’”错误。
在我的 Rails 服务器上,我注意到与 @top_ratings 和 @top_seven 变量关联的专辑 ID 与专辑的实际 ID 不同,这就是我收到错误消息的原因。
有谁知道如何重构 @top_ratings 以返回评分最高的专辑以及他们的正确 id 号,以便链接正常工作?
【问题讨论】:
-
你的问题是什么?
-
你看到请求了吗?
:id实际上是在params哈希中发送的吗? -
是的,在我的 Rails 服务器中,当我点击专辑链接时,我收到了
Parameters: {"id"=>"28"} -
每张专辑都会出现这种情况,还是只针对特定专辑?
-
查看我最近对我的问题的修改
标签: ruby-on-rails sqlite ruby-on-rails-4 rails-activerecord nomethoderror