ОБНОВЛЕНИЕ
У меня есть простое приложение rails с домашней страницей, отображающей альбомы с самым высоким рейтингом, с использованием этого кода в моем контроллере (используемый код из этого решения: Как отобразить альбомы с наивысшим рейтингом через отношение has_many Reviews):
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, отличается от фактического идентификатора альбома, поэтому я получаю сообщение об ошибке.
Кто-нибудь знает, как реорганизовать @top_ratings, чтобы он возвращал альбомы с самым высоким рейтингом с их правильным номером идентификатора, чтобы ссылка работала правильно?
:id
отправляется в хэшеparams
? - person Alex Lynham   schedule 31.12.2013Parameters: {"id"=>"28"}
, когда нажимаю ссылку на альбом - person Reuben   schedule 31.12.2013