我正在构建一个应用程序,用户可以在其中提交帖子并对其进行投票。
我需要找到一种方法来允许用户删除他们的投票。
correct_user
我在 my 下启动了一个私有方法votes_controller
,但我不太清楚如何将当前用户的投票 ID 拉到特定帖子。我想一旦我有了 ID,我就可以将它传递给一个实例变量,我可以在其中调用vote_path(@vote), method: :delete
它。
但是,现在我不太清楚如何为特定用户在特定帖子上的投票提取正确的 ID。
我@vote = current_user.votes.find_by_id(params[:id])
按照我的current user
方法做了,但显然这不起作用。不太确定如何解决这个问题。任何帮助都会很棒。
votes_controller.rb:
before_filter :correct_user, only: [:destroy]
def destroy
@vote.destroy
flash[:notice] = "Your vote has been deleted"
redirect_to root_path
end
private
def vote_params
params.require(:vote).permit(:user_id, :post_id, :up)
end
def correct_user
@vote = current_user.votes.find_by_id(vote_params[:post_id)
redirect_to root_path if @vote.nil?
end
从我的观点来看:
<%= link_to "delete", vote_path(@vote), method: :delete %>