0

投票システムに ajax を追加しようとしていますが、jQuery で個々の要素をターゲットにするのが困難です。これは私がこれまでに持っているものです:

インデックス アクションの投票リンク

<%= link_to post_votes_path(post), :method => 'post', :remote => true do %>
<span class="score"><%= post.votes.size %></span>
<% end %>

投票コントローラーでアクションを作成する

def create
@post = Post.find(params[:post_id])
@vote = @post.votes.create

respond_to do |format|
  format.html { redirect_to root_url }
  format.js 
end
end

投票の jQuery#create ビュー (create.js.erb)

$('.score').html("I voted"); 

問題は、リンクをクリックして投票すると、投票しようとした投稿だけでなく、すべての投稿の html が変更されることです。jQueryの経験があまりないので、どうしようもありませんが、明らかな何かが欠けていると思います。何か案は ?

4

2 に答える 2

1

すべてのスパンに.scoreクラスがあります。それがすべてが変わる理由です。

これは可能な解決策です。あなたのhtmlを変更してください:

<span class="score p_<%= post.id%>"><%= post.votes.size %></span>

そして、 create.js.erb を変更します

$('.score.p_<%= @post.id %>').html("I voted");
于 2013-07-04T23:07:31.407 に答える