2013-05-26 27 views
0

我有一個多態的投票模型,通過成員路由「POST」在3個不同的模型上調用。在下面的每個父模型(routes.rb)中,我在每個相應的控制器中都有一個投票方法,這些控制器傳入正確的參數以創建該模型的投票。通過成員路由「發佈」的Ajaxifying投票創建

這是瑞安貝茨Railscast http://railscasts.com/episodes/364-active-record-reputation-system

這一切都顯示了類似的實施從劃痕評級體系的作品很好,但是我想Ajaxify表決的創作。

如何按照以下方式發佈投票到vote_object_path來創建投票?我已經嘗試了一個jQuery函數來發布表單,但它錯誤地要求創建/投票模板,如果可能的話,我想保留這個實現的簡單性。

<div class="vote"> 
    <b>Votes: <%= answer.votes_count %></b><br> 
    <%= link_to "up", vote_answer_path(answer, value: 1), method: "post" %> 
<%= link_to "down", vote_answer_path(answer, value: -1), method: "post" %> 
</div> 

的routes.rb

resources :questions do 
    resources :comments, except: [:edit, :update] 
    member { post :vote } 
    end 

    resources :comments do 
    member { post :vote } 
    end 

    resources :answers do 
    member { post :vote } 
    end 

answers_controller.rb

def vote 
    @vote = current_user.votes.build(value: params[:value], votable_id: params[:id], votable_type: "Answer") 
    respond_to do |format| 
    if @vote.save 
     format.html {redirect_to :back, notice: "Vote submitted"} 
     format.js 
    else 
     format.html {redirect_to :back, alert: "You can't vote on your own content"} 
     format.js 
    end 
    end 
end 
+0

你有一個'vote.js.erb'模板? – Ven

+0

我沒有任何投票文件夾或其中一個父模型視圖文件夾中的投票模板/部分 – dodgerogers747

回答

1

什麼我建議你的是點擊來自jQuery的結合,POST查詢它,更新HTML。

$('a.vote').click(function() { 
    var url = this.href; // get URL link 
    $.post(url); 
}); 

然後,在vote.js.erb

$('#vote_count').html("Votes: <%= current_user.votes %>");