在帖子上查找当前用户的投票

时间:2013-08-13 06:45:24

标签: ruby-on-rails ruby ruby-on-rails-4

我正在构建一个用户可以提交帖子并对其进行投票的应用程序。

我需要找到一种方法来允许用户删除他们的投票。

我在correct_user下启动了一个名为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 %>

1 个答案:

答案 0 :(得分:0)

我最终把它放在我的删除链接中:

vote_path(link.votes.where(user_id: current_user).first)

我将不得不重构并清理一下,但这就是回答这个问题的原因。