Comme le bouton Ajax dans Ruby on Rails

J'ai un Rubis sur des Rails de projet avec un modèle User et un modèle Contententre autres. Je voulais le rendre possible pour un utilisateur de "like" d'un contenu, et je l'ai fait avec le acts_as_votable gem.

Pour le moment, le goût système fonctionne, mais je suis de l'actualisation de la page chaque fois que le bouton "like" (link_to) est pressé.

J'aimerais le faire à l'aide d'Ajax, afin de mettre à jour le bouton et l'aime compteur sans avoir besoin de rafraîchir la page.

Dans mon Content -> Show vue, c'est ce que j'ai:

<% if user_signed_in? %>
  <% if current_user.liked? @content %>
      <%= link_to "Dislike", dislike_content_path(@content), class: 'vote', method: :put %>
  <% else %>
      <%= link_to "Like", like_content_path(@content), class: 'vote', method: :put %>
  <% end %>
  <span> · </span>
<% end %>

<%= @content.get_likes.size %> users like this
<br>

La Content contrôleur de cela pour aime/aime pas:

def like
    @content = Content.find(params[:id])
    @content.liked_by current_user
    redirect_to @content
end

def dislike
    @content = Content.find(params[:id])
    @content.disliked_by current_user
    redirect_to @content
end

Et dans mes itinéraires.rb fichier, c'est ce que j'ai:

resources :contents do
    member do
        put "like", to: "contents#like"
        put "dislike", to: "contents#dislike"
    end
end

Comme je l'ai dit, le goût système fonctionne très bien, mais ne met pas à jour l'aime comptoir, ni le bouton "like", après qu'un utilisateur appuie sur elle. Au lieu de cela, de truc qui, je l'appelle redirect_to @content dans l'action du controller.

Comment pourrais-je mettre en œuvre des ce avec un simple appel Ajax? Est-il une autre façon de le faire?

source d'informationauteur gd.silva