私はレールアプリを持っており、好き嫌いのためにacts_as_votable
の宝石を使っています。Ajax画像の変更に関する問題
郵便は好きかもしれません。
私は「好きな」ボタンをクリックしてイメージソースが変わるようにしようとしていますが、ページをリロードすることなく同様のカウントを更新するためにajaxを使用しています。
現在のところ、これは「違う」ボタンでのみ機能しますが、何らかの理由で好きなボタンでは機能しません。ここで
は私_votes
部分である:ここでは
<% if current_user.liked? post %>
<%= link_to unlike_post_path(post), remote: true, method: :put, class: 'unlike' do %>
<%= image_tag("/assets/like.png", id: "like") %>
<% end %>
<% else %>
<%= link_to like_post_path(post), remote: true, method: :put, class: 'like' do %>
<%= image_tag("/assets/heart.png", id: "heart") %>
<% end %>
<% end %>
は私index.html.erb
(縮小さ)である:ここでは
<span id="likes_<%= post.id %>">
<%= post.cached_votes_up %>
<% if post.cached_votes_up == 1 %>
like
<% else %>
likes
<% end %>
</span>
は私のlike.js.erb
次のとおりです。ここで
$('.like').bind('ajax:success', function() {
$('#likes_<%= @post.id %>').html('<%=escape_javascript @post.get_upvotes.size.to_s %>');
$("#heart").attr("src", "/assets/like.png");
});
は私unlike.js.erb
です:
$('.unlike').bind('ajax:success', function() {
$('#likes_<%= @post.id %>').html('<%=escape_javascript @post.get_upvotes.size.to_s %>');
$("#like").attr("src", "/assets/heart.png");
});
ご覧のとおり、両方のajaxファイルは似ていますが、unlike.js.erb
ファイルのみが実際に画像を変更します。
画像のパスがすべて正しいことを確認しましたが、#heart
の画像がlike.png
の画像に変更されない理由はわかりません。
'$( '#の同類_ <%= @ post.id%>')最初のHTML html( '<%= escape_javascript @ post.get_upvotes.size.to_s%>');は、 '$( '#のように_ <%= @ post.id%>')でなければなりません。 – Sravan
私の悪い@スラヴン、私はこれを追加することを忘れていました:私はスパン ''のように、データはどこに行くのでしょうか? o 'link_to'です。私は質問を編集しました –
これは 'ajax_success'の中に来て、IDが変わっていますか? 'console.log'を一度確認してください。 – Sravan