3 votes

Façon correcte d'effectuer des mises à jour de vues dans Rails

Donc, j'ai un sérieux doute pour un certain temps. Je vois beaucoup de gens qui utilisent ajax pour faire des requêtes au serveur quand une mise à jour est nécessaire dans le front-end. Mais quelle est la différence réelle entre l'utilisation d'ajax ou par exemple l'utilisation d'un link_to. Par exemple, j'ai ce code ajax, qui fait une demande au serveur pour aimer un article :

$(function(){
    $(".pos-like").on("click", function(){
        var post_id = $(this).data("id")
        $.ajax({
            url: "/post/like/" + post_id,
            method: "POST"
        }).done(function(response){
            console.log(response)

        })
    })
});

Mais dans un autre cas, cela fonctionne également si j'utilise un link_to dans la vue pour cette même requête.

<%= link_to like_path(post_id: post.id) do %>
     <i class="fa fa-heart fa-2x post-like"></i>
<% end %>

Ensuite, dans le contrôleur, je rends simplement une partie qui change la couleur du bouton "J'aime" (en utilisant Jquery).

Ma question est la suivante : pourquoi les gens utilisent-ils normalement Ajax pour effectuer des mises à jour, alors qu'ils peuvent simplement utiliser, par exemple, un link_to dans la vue. Y a-t-il des avantages à utiliser Ajax ?

Merci !

0voto

ErvalhouS Points 3071

Éléments distants dans Rails, les vues sont quelque chose qui fait réellement des appels Ajax dans les coulisses. Donc la différence ici est que :

  • Dans le premier exemple, vous appelez explicitement ce que vous voulez appeler lorsque vous cliquez sur quelque chose.
  • Dans le deuxième exemple, vous utilisez les aides Ajax de Rails pour atteindre le même objectif, ce qui va en fait appeler un bloc de JS très similaire au premier exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X