2015-12-20 2 views
-1

Я хочу, чтобы нравится/не нравится способность на моем веб-приложение, но я получаю ошибки здесь: приращений нравится/не нравитсяПолучение ошибка с Ajax-запроса

1) по 2 за один щелчок мыши 2) просьба отправленный, он обновляет переменную 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/'+ .... 'use'/dashboard /' + .... ', также вывести сообщение об ошибке, это не ясно из кода. –

+0

, когда я использую относительный url, я становлюсь i route, например:/dashboard/29/11/like - где 29 - это идентификатор пользователя, а 11 - идентификатор сообщения, но мне нужен только идентификатор сообщения, чтобы получить его из параметров, поэтому я попытался, как вы сказали, бу не стал правильным URL. Мое сообщение об ошибке? Консоль Chrome говорит, что это внешняя ошибка (500), но она обновляет значение из post.like или post.dislike, просто не отображается сразу – Handkock

+0

Не хром-консоль в файле журнала 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.

Смежные вопросы