Ruby on rails 在rails应用程序中实现投票权(或替代方案)
一段时间以来,我一直在尝试在Rails中实现一个强大的投票系统,但一直在努力。最初我建立了自己的投票系统,但它过于简单 简而言之,它只是使用计数器缓存增加了Ruby on rails 在rails应用程序中实现投票权(或替代方案),ruby-on-rails,ruby-on-rails-plugins,voting,Ruby On Rails,Ruby On Rails Plugins,Voting,一段时间以来,我一直在尝试在Rails中实现一个强大的投票系统,但一直在努力。最初我建立了自己的投票系统,但它过于简单 简而言之,它只是使用计数器缓存增加了应答模型中的投票数列。在我发现vote_fu并意识到我的投票系统可以更加强大之前,这对我来说很好。我立即安装了它,整个周末都在拆卸我的应用程序,试图让它正常工作 我在这里发现了一些与这个插件相关的关于堆栈溢出的其他问题,但是没有一个真正提出了最终的解决方案。这是我的密码: 答案\u controller.rb: def vote_up
应答
模型中的投票数
列。在我发现vote_fu并意识到我的投票系统可以更加强大之前,这对我来说很好。我立即安装了它,整个周末都在拆卸我的应用程序,试图让它正常工作
我在这里发现了一些与这个插件相关的关于堆栈溢出的其他问题,但是没有一个真正提出了最终的解决方案。这是我的密码:
答案\u controller.rb:
def vote_up
answer = Answer.find(params[:id])
current_user.vote_up(answer), :voter_id => current_user.id
redirect_to :back
end
def create
@quote = Answer.find(params[:answer_id])
respond_to do |format|
if current_user.vote(@answer, params[:vote])
format.rjs { render :action => "create", :vote => @vote }
format.html { redirect_to root_url }
else
format.rjs { render :action => "error" }
format.html { render :action => "new" }
format.xml { render :xml => @vote.errors, :status => :unprocessable_entity }
end
end
end
投票权(u controller.rb):
def vote_up
answer = Answer.find(params[:id])
current_user.vote_up(answer), :voter_id => current_user.id
redirect_to :back
end
def create
@quote = Answer.find(params[:answer_id])
respond_to do |format|
if current_user.vote(@answer, params[:vote])
format.rjs { render :action => "create", :vote => @vote }
format.html { redirect_to root_url }
else
format.rjs { render :action => "error" }
format.html { render :action => "new" }
format.xml { render :xml => @vote.errors, :status => :unprocessable_entity }
end
end
end
answer.html.erb:(这里有两种不同的方法,它们都不起作用)
我使用的是Rails 2.3.5
有人有什么建议吗?我应该回到我以前的手工投票系统吗?有没有其他我没听说过的投票插件或方法?我想第一步是通过控制台让它工作。从您评论中的最后一个错误来看,似乎您的模型设置不正确。在您的
用户
型号中,您应该具有以下功能:
#In User.rb
acts_as_voter
#In Answer
acts_as_votable
def vote
@question = Question.find(params[:id])
if params[:vote] == 'up'
current_user.vote_for(@question)
elsif params[:vote] == 'down'
current_user.vote_against(@question)
end
redirect_to @question
end
另外,请确保已将rake:migrate
应用于数据库,然后在控制台中尝试以下操作:
u = User.first
a = Answer.last
u.votes_for(a)
当我在过去使用它时,我会有一个控制器动作,如下所示:
#In User.rb
acts_as_voter
#In Answer
acts_as_votable
def vote
@question = Question.find(params[:id])
if params[:vote] == 'up'
current_user.vote_for(@question)
elsif params[:vote] == 'down'
current_user.vote_against(@question)
end
redirect_to @question
end
jt的回答帮助我让它工作起来。我的控制器没有现成的投票方法。我认为他们应该把它添加到文档中
def vote
@question = Question.find(params[:id])
if params[:vote] == 'up'
current_user.vote_for(@question)
elsif params[:vote] == 'down'
current_user.vote_against(@question)
end
redirect_to @question
end
投票表决是伟大的。什么特别不起作用?对我来说也很好!这就是为什么我真的想让它工作!看来我的界面链接不起作用了……当我点击时,它根本就没有添加任何投票。此外,在控制台中,当我尝试u=User.first a=Answer.last u.voces_for(a)时,我会得到一个错误,如:“unknown attribute:voter”…我不确定如何更正此错误。