[RUBY] Implémentation d'une fonction similaire (Ajax)

Je vais le préparer moi-même.

la mise en oeuvre

** Modèle de contrôleur créé **

routes.erb


  Rails.application.routes.draw do
    resources :posts do
      resources :comments, only: [:create, :destroy]
      resource :likes, only: [:create, :destroy]
    end
  end

aime devient ** ressource ** car il n'est pas nécessaire de donner un identifiant

post.rb


  def liked_by?(user)
    likes.where(user_id: user.id).exists?
  end

Vous pouvez vérifier si vous l'aimez

likes_controller.rb


class LikesController < ApplicationController

  def create
    @post = Post.find_by(id: params[:post_id])
    #Conditions pour éviter les clics continus
    unless @post.liked_by?(current_user)
      @like = current_user.likes.new(post_id: @post.id)
      @like.save
    end
  end

  def destroy
    @post = Post.find_by(id: params[:post_id])
    @like = current_user.likes.find_by(post_id: @post.id)
    @like.destroy
  end

end

La redirection n'est pas nécessaire pour créer et détruire respectivement, supprimez-le si décrit.

ruby:posts/show.html.slim


#Donnez un identifiant car il faut en faire Ajax
div id='like_#{ @post.id }'
   #Partialiser l'icône similaire
   = render 'like', post: @post

ruby:posts/_like.html.slim


#Supprimer comme
- if post.liked_by?(current_user)
  = link_to post_likes_path(post), method: :delete, remote: true do
    i.fas.fa-heart style='color: red;'
    = post.likes.count

#Comme c'est gentil
- else
  = link_to post_likes_path(post), method: :post, remote: true do
    i.far.fa-heart
    = post.likes.count

Appeler un fichier JavaScript avec ** remote: true **

ruby:likes/create.js.erb


$("#like_<%= @post.id %>").html("<%= j(render 'posts/like', post: @post ) %>");

ruby:likes/destroy.js.erb


$("#like_<%= @post.id %>").html("<%= j(render 'posts/like', post: @post ) %>");

**Achevée! ** **

Recommended Posts

Implémentation d'une fonction similaire (Ajax)
[Rails] Implémentation d'une fonction similaire
[Rails] Implémentation asynchrone de la fonction similaire
[Rails] À propos de la mise en œuvre de la fonction similaire
Implémentation d'une fonction similaire en Java
Suivez l'implémentation de la fonction (Ajax)
Implémentation de la fonction de recherche
Mise en œuvre de la fonction de pagénation
[Ruby on rails] Implémentation d'une fonction similaire
Implémentation de la suppression d'ajax dans Rails
Implémentation de la fonction de prévisualisation d'image
[Rails] Implémentation de la fonction de catégorie
Mise en œuvre de la fonction déroulante de catégorie
[Rails] Implémentation de la fonction tutoriel
[Rails] Implémentation de la fonction d'importation CSV
[Rails] Implémentation de la fonction de prévisualisation d'image
[Rails] Implémentation de la fonction de retrait utilisateur
[Rails] Implémentation de la fonction d'exportation CSV
Mise en place de la fonction de tri des rails (affichés par ordre de nombre de like)
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (2)
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (1)
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (3)
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
Implémentation de la fonction de connexion Ruby on Rails (Session)
[Rails] Implémentation de la fonction d'agrandissement d'image à l'aide de lightbox2
[JQuery] Procédure d'implémentation de la fonction de saisie semi-automatique [Java / Spring]
Mise en place de la fonction de recherche Mémo d'apprentissage (création de portfolio)
Implémentation de la fonction de suppression (si vous avez une clé étrangère)
Implémentation de la fonction de prévisualisation d'image
Implémentation appliquée de l'espace de chat
Fonction de recherche [implémentation copier-coller]
[Ruby on Rails] Communication asynchrone de la fonction de publication, ajax
[Rails] Implémentation de la fonction glisser-déposer (avec effet)
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Préparation"
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "seed edition"
Ajout de la fonction de connexion invité
À propos de l'implémentation du traitement de fusion, y compris la fonction de tri de l'API Stream
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Edit Form Edition"
Implémentation de la fonction de recherche floue Rails
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "Formulaire de création"
[Java] Implémentation du réseau Faistel
Implémentation de XLPagerTabStrip avec TabBarController