[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion

Bedingungen

Nur angemeldete Benutzer können Beiträge verfassen und Kommentare abgeben. Nur der Ersteller kann den Kommentar löschen.

Tabelle

Screen Shot 2020-10-09 at 18.17.06.png

Modell-

post.rb


class Post < ApplicationRecord
  belongs_to :user
  has_many :comments
end

comment.rb


class Comment < ApplicationRecord
  belongs_to :post
end

Routing

Sie können post_id und id (des Benutzers) in den Parametern verwenden.

routes.rb


Rails.application.routes.draw do
 devise_for :users
  resources :posts do
    resources :comments, only: [:create, :destroy]
  end
  root "posts#index"
end
post_comments POST   /posts/:post_id/comments(.:format)     comments#create
post_comment DELETE /posts/:post_id/comments/:id(.:format) comments#destroy

Regler

comments_controller.rb


def create
    @post = Post.find(params[:post_id])
    @post.comments.create(comment_params)
    redirect_to post_path(@post)
  end

  def destroy
    @post = Post.find(params[:post_id])
    @comment = @post.comments.find(params[:id])
    @comment.destroy
    redirect_to post_path(@post)
  end

  private
    def comment_params
      params.require(:comment).permit(:body, :user_id)
    end

Aussicht

Die ID des Benutzers, der durch "<% = f.hidden_field: user_id, value: current_user.id%>" erstellt wurde, wird übergeben.

show.html.erb


<p>
  <strong>Post:</strong>
  <%= @post.post %>
</p>

<% if @post.user_id == current_user.id %>
<%= link_to 'Edit', edit_post_path(@post) %> |
<% end %>
<%= link_to 'Back', posts_path %>

<h3>Comments</h3>
<% @post.comments.each do |comment|%>
<ul>
  <li><%= comment.body %>
  <span>
  <% if comment.user_id == current_user.id %>
  <%= link_to '[X]', post_comment_path(@post, comment), method: :delete %>
  <% end %>
  </span>
  </li>
</ul>
<% end %>

<%= form_for [@post, @post.comments.build] do |f| %>
<div class="field">
  <%= f.text_field :body, autofocus: true, autocomplete: "body" %>
</div>
<div class="field">
  <%= f.hidden_field :user_id, value: current_user.id %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

Recommended Posts

[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
[Ruby on Rails] Implementierung der Kommentarfunktion
[Ruby on Rails] Implementierung einer ähnlichen Funktion
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
[Ruby on Rails] Asynchrone Kommunikation der Posting-Funktion, Ajax
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
[Ruby on Rails] CSV-Ausgabefunktion
[Ruby on Rails] DM, Chat-Funktion
Ein Hinweis zum Seed-Feature von Ruby on Rails
[Ruby on Rails] Einführung der Anfangsdaten
Schienen Hinzufügen einer einfachen Anmeldefunktion
[Ruby on Rails] Folgen Sie der Funktionsimplementierung: Bidirektional
Rails [Für Anfänger] Implementierung der Kommentarfunktion
[Ruby on Rails] Japanische Fehlernotation
Erklärung von Ruby auf Schienen für Anfänger ①
[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
[Ruby on Rails] Bis zur Einführung von RSpec
Empfehlung der Serviceklasse in Ruby on Rails
Ruby on Rails ~ Grundlagen von MVC und Router ~
[Ruby on Rails] Ein Memorandum mit Layoutvorlagen
Ruby on Rails Implementierung der automatischen Mail-Sendefunktion
[Ruby on Rails] Nachbearbeitungsfunktion (Aktualisieren, Löschen)
[Ruby on Rails] Individuelle Anzeige von Fehlermeldungen
Hinzufügung der Gastanmeldefunktion
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
[Ruby on Rails] Post-Score-Ranking-Funktion (gesamte Anzeige)
Ruby on Rails lernen Rekord-2020.10.07 ②
[Rails] Implementierung der Kategoriefunktion
[Ruby on Rails] Post-Bildvorschau-Funktion in Refile
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
[Rails] Implementierung der Tutorial-Funktion
Ruby on Rails Lernrekord -2020.10.06
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 ähnlichen Funktion
Zusammenfassung der Ruby on Rails-Validierung
[Ruby on Rails] Suchfunktion (Modell, Methodenauswahlformel)
Ruby on Rails Grundlegendes Memorandum
Versuchen Sie es mit dem Ruby on Rails-Abfrageattribut