Je reçois NoMethodError dans les Favoris # index undefined method
nom 'nil: NilClass`, et mon but est de lister toutes les chansons qui sont ajoutées aux favoris? Mon code ci-dessous:Liste de toutes les chansons qui sont dans mes favoris? ruby on rails
favorite_controller
class FavoritesController < ApplicationController
include FavoriteHelper
def index
@favorites = Song.all
@songs = Song.all
@songs = current_user.favorites
@top_songs = Favorite.joins("LEFT OUTER JOIN songs ON favorites.song_id = songs.id").select("favorites.*,songs.name as name, songs.artist_id as artist_id").group(:song_id).order('COUNT(songs.id) DESC')
.limit(10)
end
private
def favorites_params
params.require(:favorites).permit(:song_id, :user_id)
end
end
songs_controller.rb
class SongsController < ApplicationController
before_action :find_song, {only: [:edit, :update, :show, :like]}
def index
@songs = Song.all
@songs = Song.search(params[:term]).paginate(:page => params[:page], :per_page => 10).order(created_at: :desc)
@top_songs = Favorite.joins("LEFT OUTER JOIN songs ON favorites.song_id = songs.id").select("favorites.*,songs.name as name, songs.artist_id as artist_id").group(:song_id).order('COUNT(songs.id) DESC')
.limit(10)
@latest_albums = Album.order('created_at DESC').last(5)
end
_song.html.erb
partielle de rendre des chansons en favoris
<% @songs.each do |song| %>
<tr>
<th scope="row"><%= song.id %></th>
<% if logged_in? %>
<td>
<div class="like">
<div class="like-btn text-center" song_id="<%= song.id %>">
<span class="<%= song.heart_class(current_user) %>"></span>
</div>
</td>
<td><%= link_to @song.name, favorite_path(song.id) %></td>
<td>
<a data-toggle="modal" data-target="#addSong" data-id="<%= song.id %>" title="Add this song to playlist" class="open-AddSong" href="#addSong"><i class="fa fa-plus" aria-hidden="true" rel="tooltip" data-placement="top" title="Add to playlist"></i></a>
<div class="modal fade" id="addSong">
<%= render 'shared/add_song_to_playlist' %>
</div>
</td>
<% end %>
</tr>
<% end %>
routes.rb
post '/song:id/like', to: 'songs#like', as: :like
resources :songs
resources :favorites do
resource :songs
end`enter code here`
Merci à tous!
Merci @Ryan! Je les ai retirés des chansons et des contrôleurs favoris. Mais malheureusement, votre solution n'a pas fonctionné. – Kurta