2010-09-30 60 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