[RUBY] Comment implémenter une fonctionnalité similaire dans Rails

Je vais vous montrer comment implémenter la fonction similaire dans Rails. Le système terminé ressemble à ce qui suit. いいね1.gif

environnement

supposition

Modèle Like ajouté

$ rails g model like user_id:integer post_id:integer

$ rails db:migrate

Configurer l'association

Décrivez les éléments suivants pour chacun et définissez l'association.

like.rb


  belongs_to :user
  belongs_to :post

user.rb


  has_many :likes, dependent: :destroy

post.rb


  has_many :likes, dependent: :destroy

Configurer le routage

routes.rb


  resources :posts, shallow: true do
    resources :likes, only: [:create, :destroy]
  end

Créer la méthode liké_par?

post.rb


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

Description du contrôleur

likes_controller.rb


  def create
    like = Like.new(user_id: current_user.id, post_id: params[:post_id])
    @post = like.post
    like.save
    redirect_back(fallback_location: posts_path)
  end

  def destroy
    like = Like.find(params[:id])
    @post = like.post
    like.destroy
    redirect_back(fallback_location: posts_path)
  end

Bootstrap introduit

Gemfile


gem 'bootstrap-sass', '~> 3.3.6'
gem 'jquery-rails'
$ bundle install

Renommez le fichier application.css en application.scss

$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss

Charger Bootstrap dans scss

Écrivez ce qui suit en bas de application.scss

application.scss


@import "bootstrap-sprockets";
@import "bootstrap";

Modifier application.js

La partie suivante de application.js

application.js


//= require rails-ujs
//= require turbolinks
//= require_tree .

De

application.js


//= require rails-ujs
//= require jquery
//= require bootstrap-sprockets
//= require_tree .

Réécrivez dans.

Modifier index.html.erb

html:index.html.erb


<div class="container">
  <h1>Liste des articles</h1>
  <table class="table">
    <% @posts.each do |post| %>
      <tr>
        <td><%= post.title %></td>
        <td>
          <% if post.liked_by?(current_user) %>
            <% like = Like.find_by(user_id: current_user.id, post_id: post.id) %>
            <%= link_to like_path(like), method: :delete do %>
              <span class="glyphicon glyphicon-heart" aria-hidden="true" style="color: red;">
              <span><%= post.likes.count %></span>
            <% end %>
          <% else %>
            <%= link_to post_likes_path(post), method: :post do %>
              <span class="glyphicon glyphicon-heart" aria-hidden="true" style="color: gray;">
              <span><%= post.likes.count %></span>
            <% end %>
          <% end %>
        </td>
      </tr>
    <% end %>
  </table>
</div>

C'est tout ce qu'on peut en dire.

Article de référence

https://qiita.com/soehina/items/a68ab66da3ea1d260301

Recommended Posts

Comment implémenter une fonctionnalité similaire dans Rails
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
Comment implémenter la fonctionnalité de recherche dans Rails
Comment insérer une vidéo dans Rails
Comment implémenter la fonctionnalité de classement dans Rails
Comment créer facilement un pull-down avec des rails
[Rails] Comment mettre en œuvre le scraping
Comment mettre en œuvre un diaporama en utilisant Slick in Rails (un par un et plusieurs par un)
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
[Comment insérer une vidéo dans un hameau avec Rails]
Comment écrire une recherche de comparaison de dates dans Rails
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]
[Rails] Comment charger JavaScript dans une vue spécifique
Mettre en œuvre une fonctionnalité similaire pour les articles
Implémenter un formulaire de contact dans Rails
Comment installer jQuery dans Rails 6
[Rails] Comment mettre en œuvre le classement par étoiles
Comment installer Swiper in Rails
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
Comment implémenter une image de profil circulaire avec CarrierWave et R Magick in Rails
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Comment changer le nom de l'application dans les rails
Comment utiliser MySQL dans le didacticiel Rails
Comment appliquer les conventions de codage en Java
[rails] Comment configurer le routage dans les ressources
[rails] Comment créer un modèle partiel
Implémenter quelque chose comme une pile en Java
Pour implémenter la publication d'images à l'aide de rails
Comment implémenter le traitement asynchrone dans Outsystems
Comment publier une bibliothèque dans jCenter
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment écrire des rails
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
Comment afficher une page Web en Java
Comment traduire Rails en japonais en général
[Rails] Comment implémenter un test unitaire d'un modèle
Comment exécuter une tâche djUnit dans Ant
Comment ajouter un chemin de classe dans Spring Boot
Comment créer un thème dans Liferay 7 / DXP
Comment désinstaller Rails
Comment mettre à jour les modifications utilisateur dans Rails Devise sans entrer de mot de passe
Comment séparer .scss par contrôleur dans Rails
Comment ajouter conditionnellement une classe html.erb dans Rails
[Rails] Comment créer un bouton de partage Twitter
Comment utiliser JQuery dans Rails 6 js.erb