Ich habe die Implementierung der Kommentarfunktion in Schienen zusammengefasst.
Die Entwicklungsumgebung für Ruby on Rails ist vorhanden. Posts (Post-Tabelle) und User (User-Tabelle) wurden bereits erstellt. Die Benutzertabelle verwendet gem devise. Dieses Mal werden wir einen Kommentar für den Beitrag implementieren.
Die Details und Beziehungen der zu erstellenden Kommentartabelle lauten wie folgt.
$ rails g model comment
20********_create_comments.rb
class CreateComments < ActiveRecord::Migration[6.0]
def change
create_table :comments do |t |
#Von hier aus beschrieben
t.references :user,foreign_key: true
t.references :post, foreign_key: true
t.text :text,nul: false
#Bisher beschrieben
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
#Schreiben Sie die Erstellung einer Kommentarinstanz
#Diesmal Beiträge#Ich möchte eine Kommentarfunktion in show implementieren.
@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
#Kürzung
<%= form_with model: [@post,@comment],merhod: :post,locals: true do | form | %>
<%= form.text_area :text %>
<%= form.submit "Post" %>
<% end %>
#Kürzung
Kommentarfunktion abgeschlossen!
Dieses Mal habe ich die Kommentarfunktion in Rails von der Tabellenerstellung aus gestartet. Ich bin auch ein Anfänger in der Programmierung, also lassen Sie mich bitte wissen, wenn Sie Fehler machen. Vielen Dank für das Lesen bis zum Ende!
Recommended Posts