[RUBY] Rails [Pour les débutants] Implémentation de la fonction de commentaire

J'ai résumé l'implémentation de la fonction de commentaire dans les rails.

supposition

L'environnement de développement pour Ruby on Rails est en place. Les messages (table de publication) et l'utilisateur (table des utilisateurs) ont déjà été créés. La table User utilise un modèle de gemme. Cette fois, nous allons mettre en œuvre un commentaire pour le message.

Implémentation de la fonction de commentaire

1. Création d'un modèle de commentaire

Les détails et les relations de la table Commentaires à créer sont les suivants. スクリーンショット 2020-11-11 6.28.55.png

Modélisation dans le terminal

$ rails g model comment

Description du fichier de migration

20********_create_comments.rb


class CreateComments < ActiveRecord::Migration[6.0]
  def change
    create_table :comments do |t |
      #Décrit d'ici
      t.references :user,foreign_key: true
      t.references :post, foreign_key: true
      t.text :text,nul: false
      #Décrit jusqu'à présent
      t.timestamps
    end
  end
end

Adaptation du fichier de migration

$ rails db:migrate

Lier le modèle de commentaire, le modèle utilisateur et le modèle de publication

app/models/comment.rb


class Comment < ApplicationRecord
  belongs_to :user
  belongs_to :post
end

app/models/user.rb


class User < ApplicationRecord
  has_many :posts
  has_many :comments
end

app/models/post.rb


class Comment < ApplicationRecord
  has_many :users
  has_many :comments
end

2. Créer un routage

routes.rb


Rails.application.routes.draw do
  resources :users
  resources :posts do
    resource :comments
  end
end

3. Création d'un contrôleur de commentaires

comments_controller.rb


class CommentsController < ApplicationController
  def create
    @comment = Comment.create(comment_params)
    redirect_back(fallback_location: root_path)
  end

 private

  def comment_params
    params.require(:comment).permit(:text).merge(user_id: current_user.id, post_id: params[:post_id])
  end
end

posts_controller.rb


class PostsController < ApplicationController
  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)
    if @post.save
      redirect_to user_url(current_user)
    else
      render :new
    end
  end
  
  def show
    #Créer une instance de commentaire
    #Cette fois, les messages#Je voudrais implémenter une fonction de commentaire dans show.
    @comment = Comment.new
    @comments = @post.comment_cs.includes(:user)
  end

private

  def post_params
    params.require(:post).permit(:text).merge(user_id: current_user.id)
  end

  def set_post
    @post = Post.find(params[:id])
  end
 
end

4. Créer une vue

Rédigez une description de la fonction de commentaire sur la page de détails de l'article.

erb:views/posts/show.html.erb



#réduction

 <%= form_with model: [@post,@comment],merhod: :post,locals: true do | form | %>
    <%= form.text_area :text %>
    <%= form.submit "Publier" %>
 <% end %>

#réduction

Fonction de commentaire terminée!

Sommaire

Cette fois, j'ai démarré la fonction de commentaire dans Rails à partir de la création de table. Je suis également un débutant en programmation, alors faites-le moi savoir si vous faites des erreurs. Merci d'avoir lu jusqu'au bout!

Recommended Posts

Rails [Pour les débutants] Implémentation de la fonction de commentaire
[Rails] Implémentation de la fonction de catégorie
[Rails] Implémentation de la fonction tutoriel
[Rails] Implémentation d'une fonction similaire
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
[Rails] Implémentation de la fonction d'importation CSV
[Rails] Implémentation asynchrone de la fonction similaire
[Rails] Implémentation de la fonction de prévisualisation d'image
[Rails] À propos de la mise en œuvre de la fonction similaire
[Rails] Implémentation de la fonction de retrait utilisateur
[Rails] Implémentation de la fonction d'exportation CSV
[Ruby on Rails] Implémentation de la fonction de commentaire
[Rails] Commentaire mémo de procédure d'implémentation
Explication de Ruby sur rails pour les débutants ①
[Ruby on rails] Implémentation d'une fonction similaire
Implémentation de la fonction de recherche
Mise en œuvre de la fonction de pagénation
[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
Implémentation de la suppression d'ajax dans Rails
Implémentation de la fonction de recherche floue Rails
[Rails] Implémentation de la fonction glisser-déposer (avec effet)
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
Implémentation de la fonction de prévisualisation d'image
[Pour les débutants de Rails] Implémentation de la fonction de recherche multiple sans Gem
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Préparation"
(Pour les débutants) [Rails] Installer Devise
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "seed edition"
Mise en œuvre de la fonction déroulante de catégorie
[Rails / appareil] Implémentation de la fonction d'édition des informations de compte / Procédure de changement de destination de la redirection
Explication de Ruby sur rails pour les débutants ⑥ ~ Création de validation ~
Explication de Ruby on rails pour les débutants ② ~ Création de liens ~
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "Edit Form Edition"
[Rails] Implémentation de la fonction de catégorie multicouche à l'aide de l'ascendance "Formulaire de création"
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
Mise en place de la fonction de tri des rails (affichés par ordre de nombre de like)
Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~
[Pour les débutants] Résumé du constructeur java
À propos de la gestion des erreurs de la fonction de commentaire
[Rails] Fonction de commentaire (enregistrement / affichage / suppression)
[Rails] Implémentation de fonctions de catégorie plusieurs à plusieurs
[Rails] Implémentation de la fonction de catégorie d'ascendance gemme
Implémentation d'une fonction similaire en Java