2015-12-27 71 views
1

我目前正在一個project.I使用acts_as_votable gem爲類似的系統。我使用的是glypicons,而不是按鈕。一切工作正常,但問題是當我點擊像,每個職位都喜歡,但我只想選定的郵政被喜歡。Rails投票Ajax(acts_as_votable)

在post_controller:

def upvote 
    @post = Post.find(params[:id]) 
    @post.upvote_from current_user 
    respond_to do |format| 
     format.html { redirect_to :back } 
     format.js 
    end 
end 

在index.html.erb:

<div class='votee'>   
      <%= render partial: 'vote', locals: {:@post => post}%> 
     </div> 

在部分_vote.html.erb我

<small class="likecount-<%= @post.id %>"><%= pluralize(@post.get_upvotes.size, 'like', 'like\'s')%>&nbsp;</small> 
<% if current_user.voted_up_on? @post %> 
<%= link_to like_post_path(@post), class: "like", method: :put, remote: true do%> 
    <i class="fa fa-heart fa-lg" style="color:#900603;"></i>&nbsp; 
<% end -%> 
 

而在upvote.js.erb

$('.votee').html('<%= j render partial: 'vote'%>'); 
$('.likecount-<%= @post.id %>').html('<%= j pluralize(@post.get_upvotes.size, 'like', 'like\'s')%>'); 

路線是幹活的罰款。 在此先感謝您的幫助。

+0

點擊按鈕後,觀察'rails server'終端內的日誌。有時你會從那裏得到提示。 –

+0

我沒有在我的日誌中發現任何錯誤,它也可以正常工作。 – Vikram

回答

0

我認爲錯誤必須是與...

<%= render partial: 'vote', locals: {:@post => post} %> 

...應該...

<%= render partial: 'vote', locals: {post: post} %> 

-

局部應擺脫@post並有post改爲:

<small class="likecount-<%= post.id %>"><%= pluralize(post.get_upvotes.size, 'like', 'like\'s')%>&nbsp;</small> 
<% if current_user.voted_up_on? post %> 
    <%= link_to like_post_path(post), class: "like", method: :put, remote: true do%> 
     <i class="fa fa-heart fa-lg" style="color:#900603;"></i>&nbsp; 
    <% end -%> 
<% end -%> 

-

你的JS應該如下:

$('.votee#<%= post.id %>').html('<%= j render "vote", locals: { post: @post } %>'); 
// other line is okay 

你也最好更新您的index方法來添加一個idvotee DIV:

<div class='votee' id="<%= post.id %>">  
... 
</div> 

問題可能是所有帖子更新的JS;實際數據庫可能僅針對單個帖子進行更新。

+0

感謝Rich Peck,它適合我。其實'id =「<%= post.id%>」'做了魔術。 – Vikram