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