[RUBY] Rails [Für Anfänger] Implementierung der Kommentarfunktion

Ich habe die Implementierung der Kommentarfunktion in Schienen zusammengefasst.

Annahme

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.

Implementierung der Kommentarfunktion

1. Erstellen eines Kommentarmodells

Die Details und Beziehungen der zu erstellenden Kommentartabelle lauten wie folgt. スクリーンショット 2020-11-11 6.28.55.png

Modellierung im Terminal

$ rails g model comment

Beschreibung der Migrationsdatei

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

Anpassung der Migrationsdatei

$ rails db:migrate

Verknüpfen Sie das Kommentarmodell, das Benutzermodell und das Post-Modell

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. Erstellen Sie ein Routing

routes.rb


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

3. Erstellen eines Kommentar-Controllers

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

4. Ansicht erstellen

Schreiben Sie eine Beschreibung der Kommentarfunktion auf die Seite mit den Beitragsdetails.

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!

Zusammenfassung

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

Rails [Für Anfänger] Implementierung der Kommentarfunktion
[Rails] Implementierung der Kategoriefunktion
[Rails] Implementierung der Tutorial-Funktion
[Rails] Implementierung einer ähnlichen Funktion
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Flash-Implementierung ~
[Rails] Implementierung der CSV-Importfunktion
[Rails] Asynchrone Implementierung der Like-Funktion
[Rails] Implementierung der Bildvorschau
[Rails] Über die Implementierung der Like-Funktion
[Rails] Implementierung der Benutzerrückzugsfunktion
[Rails] Implementierung der CSV-Exportfunktion
[Ruby on Rails] Implementierung der Kommentarfunktion
[Rails] Memo zur Implementierung der Kommentarfunktion
Erklärung von Ruby auf Schienen für Anfänger ①
[Ruby on Rails] Implementierung einer ähnlichen Funktion
Implementierung der Suchfunktion
Implementierung der Pagenationsfunktion
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
[Rails] Implementierung der Bildvergrößerungsfunktion mit Lightbox2
Implementierung der Ajax-Entfernung in Rails
Implementierung der Fuzzy-Suchfunktion für Schienen
[Rails] Implementierung der Drag & Drop-Funktion (mit Wirkung)
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
Implementierung der Bildvorschau
[Für Anfänger von Rails] Mehrfachsuchfunktion ohne Gem implementiert
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Vorbereitung"
(Für Anfänger) [Rails] Installieren Sie das Gerät
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der "Seed Edition" der Vorfahren
Implementierung der Kategorie-Pulldown-Funktion
[Rails / devise] Implementierung der Funktion zum Bearbeiten von Kontoinformationen / Verfahren zum Ändern des Umleitungsziels
Erklärung von Ruby auf Schienen für Anfänger ⑥ ~ Erstellung der Validierung ~
Erklärung von Ruby on Rails für Anfänger ② ~ Links erstellen ~
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Edit Form Edition"
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Erstellungsformular"
[Verfahren 1 für Anfänger] Ruby on Rails: Aufbau einer Entwicklungsumgebung
Implementierung der Rails-Sortierfunktion (angezeigt in der Reihenfolge der Anzahl der Gleichen)
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Informationen zur Fehlerbehandlung der Kommentarfunktion
[Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)
[Rails] Implementierung von Viele-zu-Viele-Kategoriefunktionen
Implementierung der Funktionsfunktion [Rails] gem ancestry category
Implementierung einer ähnlichen Funktion in Java