如何使用Ajax / JavaScript(Rails)动态更新此投票计数器?

时间:2012-02-05 11:19:16

标签: ruby-on-rails-3

我建立了一个简单的投票系统:

votes_controller.rb:

class VotesController < ApplicationController
  def vote_up
    @post = Post.find(params[:id])
    @vote = @post.votes.create(:user_id => current_user.id, :polarity => 1)
  end
end

(如果这里有任何不良做法,请告诉我)

视图/ show.html.erb:

<h3><%= @post.votes.count %> votes</h3><br />

<%= link_to "Vote Up", vote_up_path(@post), :remote => true %>

(我当然会把这部分放在一边)

routes.rb中:

get 'votes/:id/vote_up' => 'votes#vote_up', as: 'vote_up'

当我点击“投票”链接时,投票会添加到帖子中,但我必须刷新页面才能看到更改。如何使用Ajax / JavaScript动态刷新@post.votes.countvote.user.username

1 个答案:

答案 0 :(得分:5)

首先为show.html.erb制作包装div

<div class='post-<%=@post.id%>' >
 <h3><%= @post.votes.count %> votes</h3><br />
 <%= link_to "Vote Up", vote_up_path(@post), :remote => true %>
</div>

并在vote_up.js.erb

$("post-<%=@post.id%>").html('<%=escape_javascript @post.votes.count %>');

或类似的东西