2013-05-26 2 views
0

3 가지 모델에서 회원 경로 "POST"를 통해 호출되는 다형 투표 모델이 있습니다. 아래의 각 상위 모델 (routes.rb)에서 해당 모델에 대한 투표를 작성하기 위해 올바른 매개 변수를 전달하는 해당 컨트롤러 각각에 투표 메소드가 있습니다.회원 경로를 통해 "POST"하는 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

에서 다음

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

, 당신은'vote.js.erb' 템플릿을해야합니까? – Ven

+0

투표 폴더 나 상위 모델보기 폴더 중 하나에 투표 용 템플릿/부분 집합이 없습니다. – dodgerogers747

답변

1

I, 당신은 POST가를 조회, jQuery를에서 클릭을 결합하는 게 좋을 것 무엇과 HTML을 업데이트하십시오. vote.js.erb

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