[RAILS] À propos de la gestion des erreurs de la fonction de commentaire

introduction

Rails 6.0.3.4

J'ai trébuché lors de la mise en œuvre de la gestion des erreurs de la fonction de commentaire, je vais donc l'enregistrer ici.

Je crée un site de publication de recettes, et lorsque j'entre les détails de la recette, il y a une fonction de commentaire et une liste de commentaires. Le nom de l'utilisateur qui a publié le commentaire est également inclus. Commentaire Il est supposé que la vue qui affiche le commentaire du contrôleur de modèle est terminée. Dans le routage, les commentaires sont imbriqués dans la recette.

Créer une validation

class Comment < ApplicationRecord
  belongs_to :recipe
  belongs_to :user
  validates :contents, presence: true, length: { maximum: 100 }
end

Ça ressemble à ça. contents est le nom de la colonne qui contient le contenu du commentaire. La validation du contenu est que vous ne pouvez pas publier dans le vide et qu'il est de 100 caractères ou moins.

commentaires Modifier le contrôleur

class CommentsController < ApplicationController

  def create
    @recipe = Recipe.find(params[:recipe_id]) #Définir quelle recette est associée
    @comment = Comment.new(comment_params) #Créez une instance vide (n'oubliez pas les paramètres forts)
    if @comment.save #Si vous pouvez enregistrer le commentaire
      redirect_to recipe_path(@comment.recipe.id) #Vous serez renvoyé à la liste des recettes. Disons au chemin de retour de quel identifiant de recette il s'agit. Je m'associe, [email protected] avec identifiant
    else #Si vous ne pouvez pas le sauvegarder (quand il est validé)
      @comments = @recipe.comments.includes(:user) #Pour les commentaires, affichez les commentaires jusqu'à présent (je n'ai pas écrit ici)
       render 'recipes/show' #Revenir à la liste des recettes
    end
  end

  private

  def comment_params
Abréviation
  end
end

Pour le moment, s'il n'est pas sauvegardé, restaurez-le simplement avec render! Je n'ai écrit que le rendu. Cependant, lorsque je le fais, j'obtiens un message d'erreur, mais j'obtiens une erreur indiquant que les commentaires jusqu'à présent disparaissent de la liste.

render consiste à afficher la vue directement en premier lieu. Il ne passe pas par le contrôleur. En d'autres termes, il va rendre "recettes / show" sans la définition de @comments. Qu'est-ce que @comments est écrit dans la liste des recettes (recettes / vue spectacle)? Il semble que c'était le cas. Définissons donc @comments avant de revenir à la vue avec rendu.

Vue

Je vais le mettre de côté au cas où.

<div class="comment-box">
    <% if @comments %>
      <% @comments.each do |comment| %>← Ici@commentaires
        <p>
        <strong><%= comment.user.nickname %>:</strong>
        <%= comment.contents %>
        </p>
      <% end %>
    <% end %>
  </div>

Recommended Posts

À propos de la gestion des erreurs de la fonction de commentaire
À propos de la gestion de Null
[Rails] À propos de la mise en œuvre de la fonction similaire
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Aucun bean éligible de type Correction d'erreur
Rails [Pour les débutants] Implémentation de la fonction de commentaire
À propos de la gestion des exceptions
À propos de la gestion des exceptions
Fonction de commentaire implémentée
À propos de Aucune erreur de méthode
À propos de la gestion des exceptions Ruby
À propos de disconnect () de HttpURLConnection
À propos de la double fonction -java
Implémentation de la fonction de commentaire (Ajax)
À propos de la sélection d'OpenJDK
Implémentation de la fonction de recherche
À propos de DI of Spring ①
À propos de DI of Spring ②
Mise en œuvre de la fonction de pagénation
Gestion des erreurs avec Graphql-ruby
À propos de form. ○○ de form_with
À propos de l'implémentation du traitement de fusion, y compris la fonction de tri de l'API Stream
À propos de la fonction de Spring Boot en raison de différentes versions
Une note sur la fonction de départ de Ruby on Rails
Comportement de Files.copy (pathA, pathB) au moment de l'erreur
Ajout de la fonction de connexion invité
À propos des instances Java
[Java] Pratique de la gestion des exceptions [Exception]
Implémentation de la fonction de recherche séquentielle
À propos du fonctionnement simple de Docker
À propos de l'erreur de contexte Spring Framework
À propos de la description de Docker-compose.yml
[Java] À propos de la gestion des exceptions try-catch
Implémentation d'une fonction similaire (Ajax)
Implémentation de la fonction de prévisualisation d'image
À propos de la comparaison de taille de compareTo
À propos des types de couverture de code
[Rails] Implémentation de la fonction de catégorie
Mise en œuvre de la fonction déroulante de catégorie
Mémorandum sur LOD.
[Rails] Implémentation de la fonction tutoriel
[Rails] Implémentation d'une fonction similaire
Fonction de commentaire de création d'application asynchrone
À propos de l'ajout d'une fonction similaire
Résumé du traitement des erreurs Java
À propos de la correspondance partielle du sélecteur
[Rails] About Uglifier :: Erreur: jeton inattendu: au moment du déploiement