J'ai résumé l'implémentation de la fonction de commentaire dans les rails.
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.
Les détails et les relations de la table Commentaires à créer sont les suivants.

$ rails g model comment
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
$ rails db:migrate
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
routes.rb
Rails.application.routes.draw do
  resources :users
  resources :posts do
    resource :comments
  end
end
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
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!
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