我有一个正在构建的音乐应用程序。我想以这样一种方式设置它,艺术家可以上传音乐文件,但在管理员批准文件以确保它不是垃圾邮件之前,它不会显示在索引页面上。我已将歌曲资源嵌套在用户资源下,并在成员上调用了批准,但出现以下错误。如果没有创建歌曲的管理员用户正在调用嵌套方法,我该如何调用它。
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 %>