2010-09-30 64 views
1

我正在Rails中创建一个站点,并且我想添加一个像Stackoverflow这样的投票上/下系统。如何创建像Stackoverflow的Up/Down投票系统?

任何人都可以提出该怎么办呢?我知道我会在数据库中输入每个投票,但我的意思是,我如何编码投票按钮?我会用什么,任何人都可以帮助我。 Ajax不是必需的,但它会很好。

我会尝试使用POST命令,做这样的事情,

<form name="input" action="/grinders" method="POST"> 
<input type="hidden" name="id" value="<%=h grinder.id %>"> 
<input type="hidden" name="vote" value="up"> 
<input type="submit" value="Vote" /> 
</form> 

但是,我得到一个真实性标记错误,我真的不知道如何与表单辅助工作。

回答

5

有一个votes表所示:

[PK] vote_id, vote_type (up/down), [FK] post_id, [FK] user_id, time [optional] 

另外一个score字段添加到您posts

然后你可以有投票按钮访问喜欢的链接:/vote/post_id/type/,如:/vote/14098/up。这可以通过或不通过Ajax来完成。

当投票动作被调用时,检查用户是否曾经投票过该帖子 - 如果是,拒绝它。如果不是,请在votes表中创建一个包含相关值的行,并更新posts表中的score字段。

+0

我在想那样的事情,但是不能有人这样做? – Rickmasta 2010-09-30 03:02:20

+1

“黑客”是什么意思?用户是否直接输入URL并不重要。在保存任何内容到数据库之前,您仍然应该验证是否允许用户投票。 – NullUserException 2010-09-30 03:07:01

+0

将最后一段放在事务处理块中,你很好。 – Raphomet 2010-09-30 03:56:49