[RUBY] [Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)

Ein Memorandum zur Implementierung der Kommentarfunktion für Beiträge.

Tor

Implementierung

Kommentarmodell und Tabellenerstellung

Terminal


% rails g model Comment comment_text:text user:references post:references
% rails g controller Comments
% rails db:migrate

Assoziation zum Modell hinzugefügt.

Kommentar Modell


belongs_to :post      # Comment.Erhalten Sie kommentierte Beiträge auf Beitrag
belongs_to :user      # Comment.Holen Sie sich einen Kommentarbeitrag mit dem Benutzer

Benutzermodell


has_many :posts, dependent: :destroy
has_many :comments, dependent: :destroy    # User.Erhalten Sie Benutzerkommentare mit Kommentaren

validates :comment_text, presence: true, length: { maximum: 1000 }   #Überprüfen Sie den Himmel, begrenzen Sie die Anzahl der Zeichen usw. ..

Postmodell


belongs_to :user
has_many :comments, dependent: :destroy    # Post.Holen Sie sich Kommentare für diesen Beitrag mit Kommentaren

Kommentarbereich auf der Detailseite eingerichtet

Detailseite


-#Kommentaranzeige
= @comments.each do |c|
  = c.user.name
  - if c.user.id == @post.user.id   #Artikelautor
    %p Gepostet von
  = simple_format(c.comment_text)   #Anzeige mit Zeilenumbrüchen
  = link_to 'Löschen', post_comment_path(@post, c), data: {confirm: '本当にLöschenしますか?'}, method: :delete
    -#Um einen Kommentar zu löschen,@Post (Eltern), @Muss in Kommentaren an c übergeben werden

-#Einen Kommentar posten
= form_for [@post, @comment], local: true do |f|   #Da der Kommentar mit dem Beitrag verknüpft ist, schreiben Sie ihn als Array
  = f.text_area :comment_test
  = f.submit "Post"

Stellen Sie das Routing so ein, dass es mit der Listenanzeigeseite verknüpft ist.

routes.rb


resources :posts do   #Nest, um auf Beiträge zu verlinken
  resources :comments, only: [:create, :destroy] 
end

Aktionsdefinition auf dem Controller

Registrierungs- / Löschaktion kommentieren (erstellen / zerstören).

Terminal


% rails g controller comments

Kommentare Controller


before_action :set_post
before_action :authenticate_user!    #Nur zulässig, wenn Sie angemeldet sind

def create
  @comment = @post.comments.create(comment_params)
  if @comment.save
    redirect_to blog_path(@post) notice: 'Kommentiert'
  else
    flash.now[:alert] = 'Kommentar fehlgeschlagen'
    render post_path(@post)
  end
end

def destroy
  @comment = Comment.find(params[:id])
  if @comment.destroy
    redirect_to post_path(@post), notice: 'Kommentar gelöscht'
  else
    flash.now[:alert] = 'Kommentar konnte nicht gelöscht werden'
    render post_path(@post)
  end
end

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

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

Da die Kommentarliste auch auf der Beitragsseite (show) angezeigt wird, können Kommentardaten mit posts # show abgerufen werden.

Beiträge Controller


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

  @comment = Comment.new     #Erstellen Sie eine Instanz für ein Formular(Zum Hinzufügen von Kommentaren)
  @comments = @post.comments #Zur Anzeige der Kommentarliste
end
      :

Recommended Posts

[Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)
[Rails] Implementieren Sie die Registrierungs- / Löschfunktion für Kreditkarten in PAY.JP
[Ruby on Rails] Implementierung der Kommentarfunktion
[Rails] Memo zur Implementierung der Kommentarfunktion
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
Rails [Für Anfänger] Implementierung der Kommentarfunktion
[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)
Schienen folgen der Funktion
Kommentarfunktion implementiert
[Rails] Benachrichtigungsfunktion
Implementierung der Kommentarfunktion (Ajax)
[Ruby on Rails] Post-Score-Ranking-Funktion (gesamte Anzeige)
[Rails] Tag-Ranking-Funktion
Implementierung der Rails CRUD-Funktion ① (Neuzugang, diesmal Löschung)
[Ruby on Rails] Lesezeichenfunktion (bevorzugte Registrierung, wie): Eine Richtung
[Rails] Implementiere die Event-End-Funktion (logisches Löschen) mit Paranoia (Gem)
Implementieren Sie die Benutzerregistrierungsfunktion und die Unternehmensregistrierungsfunktion separat in Rails devise
Implementieren Sie die Anwendungsfunktion in Rails
Implementierung der Fuzzy-Suchfunktion für Schienen
[Schienen] Implementieren Sie die Benutzersuchfunktion
Suchfunktion mit [Rails] Ransack
[Rails] Implementierung der Kategoriefunktion
Schienen ~ Die Nachrichtenfunktion verstehen ~
[Rails] EC-Site-Cart-Funktion
[Rails] Implementierung der Tutorial-Funktion
[Rails] Implementieren Sie die Image-Posting-Funktion
[Rails] Implementierung einer ähnlichen Funktion
Kommentarfunktion zur App-Erstellung asynchron
[Rails] Implementierung einer neuen Registrierungsfunktion im Assistentenformat mit devise
[Rails] Implementierung der Couponfunktion (mit automatischer Löschfunktion mittels Stapelverarbeitung)