作成中の音楽アプリがあります。アーティストが音楽ファイルをアップロードできるように設定したいのですが、管理者がファイルを承認してスパムでないことを確認するまで、インデックス ページには表示されません。ユーザー リソースの下に曲リソースをネストし、メンバーの承認を呼び出しましたが、以下のエラーが発生します。曲を作成していない管理者ユーザーによって呼び出されている場合、ネストされたメソッドを呼び出すにはどうすればよいですか。
ActiveRecord::RecordNotFound in SongsController#approve
Couldn't find Song with id=1
app/controllers/songs_controller.rb:35:in `approve'
曲IDは実際には13です。
曲コントローラの承認機能:
def approve
@song = Song.find(params[:id])
@song.accept
#UserMailer.invitation_confirmation.deliver
redirect_to :back, :only_path => true, :success => "Sent approval for #{@song.title} to #{@song.user.name} at #{@song.user.email}."
end
ユーザーコントローラーで私が持っているアクションを表示します
def show
@songs = Song.all
@user = User.find(params[:id])
end
ルート ファイル内:
resources :users do
resources :songs do
get 'approve', on: :member
get 'decline', on: :member
end
end
そして、私が持っている管理ダッシュボードのビューで
<% if @user.admin? %>
<% @songs.each do |song| %>
<%= image_tag song.artwork_url(:thumb) if song.artwork? %>
<h4>Title</h4><p><%= song.title %></p>
<h4>Album</h4><p><%= song.album %></p>
<p><%= song.current_state %></p>
<%= link_to "Approve", approve_user_song_path(song) %> |
<%= link_to "Decline", decline_user_song_path(song) %>
<% end %>
<% end %>