2015-12-20 114 views
-1

我想就我的web應用程序中的喜歡/不喜歡的能力,但我在這裏得到錯誤的錯誤:用2%的點擊 2)請求掌握AJAX請求

1)喜歡/不喜歡的增量發送後,它會更新like/dislike變量,但我必須重新加載頁面以查看新的更新數據。

我在做什麼錯?

這裏是我的代碼:

我的觀點:

#app/views/dashboard/view.html.erb 
<td><span class="glyphicon glyphicon-thumbs-up likeAction"><%= p.like %> </td> 
<td><span class="glyphicon glyphicon-thumbs-down dislikeAction"><%= p.dislike %> </td> 

我的控制器:

#app/controllers/dashboard_controller.rb 
    def like 
    @post=Post.find(params[:id]) 
    @post.increment!(:like) 
    end 

    def dislike 
    @post=Post.find(params[:id]) 
    @post.increment!(:dislike) 
    end 

我的JS文件:

jQuery(function($) { 
    $(".likeAction").click(function(){ 
    var current_post_tr = $(this).parents('tr')[0]; 
    $.ajax({ 
     url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/like', 
     type: 'PUT', 
     success: function(){ 
      $("#likeAction").hide().fadeIn(); 
     } 
    }); 
    }); 

    $(".dislikeAction").click(function(){ 
    var current_post_tr = $(this).parents('tr')[0]; 
    $.ajax({ 
     url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/dislike', 
     type: 'PUT', 
     success: function(){ 
      $(".dislikeAction").hide().fadeOut(); 
     } 
    }); 
    }); 
}); 

所以,當您的要求成功運行它不會隱藏,然後在不褪色

+0

你的'url'選項應該是一個相對的,而不是絕對的,而不是''http:// localhost:3000/dashboard /'+ ....'' ',還發布了一條錯誤消息,從代碼中不清楚。 –

+0

當我使用相對網址時,我變成了我的路由,如:/ dashboard/29/11/like - 其中29是用戶的ID,11是帖子的ID,但我只需要帖子的ID來獲取它從參數,所以我試着如你所說,bu沒有成爲一個正確的網址。我的錯誤訊息? Chrome控制檯表示它是一個外部錯誤(500),但它更新了post.like或post.dislike的值,只是不會立即顯示它 – Handkock

+0

不是Chrome控制檯,在rails日誌文件中涉及到軌道服務器。 –

回答

0

Relaod頁面(location.reload();):

jQuery(function($) { 
    $(".likeAction").click(function(){ 
    var current_post_tr = $(this).parents('tr')[0]; 
    $.ajax({ 
     url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/like', 
     type: 'PUT', 
     success: function(){ 
      $(".likeAction").hide().fadeIn(); 
      location.reload(); 
     } 
    }); 
    }); 

    $(".dislikeAction").click(function(){ 
    var current_post_tr = $(this).parents('tr')[0]; 
    $.ajax({ 
     url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/dislike', 
     type: 'PUT', 
     success: function(){ 
      $(".dislikeAction").hide().fadeOut(); 
      location.reload(); 
     } 
    }); 
    }); 
}); 

此外,通知:.likeAction代替#likeAction在第一個函數中。此外,請注意.dislikeAction而不是dislikeAction