3つの異なるモデルでメンバールート「POST」を介して呼び出されるポリモーフィック投票モデルがあります。以下の各親モデル (routes.rb) には、対応する各コントローラーに投票メソッドがあり、正しいパラメーターを渡してそのモデルの投票を作成します。
これは、 Ryan Bates 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>
ルート.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
answer_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