我在尝试销毁用户对“贡献”的投票时遇到以下错误:
No route matches {:action=>"destroy", :controller=>"contribution_votes",
:id=>#<ContributionVote contribution_id: 8245, user_id: 40>}
但不知道为什么。这是发送请求的按钮
<%= button_to "undo voteup!",
contribution.contribution_votes.find_by_user_id(current_user),
:method => :delete, :class => 'contribution_vote undo' %>
这是控制器中的“破坏”动作:
def destroy
@vote = current_user.contribution_votes.find(params[:id])
@vote.destroy
@contribution = Contribution.find_by_id(@vote.contribution_id)
@contribution_decrement = @contribution.decrement(:votes)
if @vote.destroy and @contribution_decrement.save
respond_to do |format|
format.html {redirect_to :back}
format.js
end
else
redirect_to :back
end
end
(我知道这里有一些冗余,但是要在以后填写)
这是routes.rb中的设置
resources :contribution_votes, :only => [:create, :destroy]
有人可以帮忙吗?我怀疑答案是显而易见的,但我无法在任何地方找到答案。
答案 0 :(得分:1)
根据(我认为它会有所帮助)更改您的代码:
<%= button_to "undo voteup!",
contribution_votes_path(current_user.id),
:method => :delete, :class => 'contribution_vote undo' %>
..顺便说一下:在你的控制台中键入rake routes
并确认你使用正确的路径路径(我可能会误解)。