我有一个多态投票模型,通过 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
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