[RAILS] Résoudre ArgumentError dans TasksController # update

Tout d'abord, reconnaissez que donné0 et attendu1 sont des erreurs qui n'ont pas le même nombre d'arguments.

Après cela, j'avais besoin d'une conclusion, (task_params).

Puis je me suis demandé ce que c'était et j'ai décidé de jeter un œil

889bc80b3c184bbcc434429245f79351.png

Vérifiez d'abord qu'il est coché en rouge

En y regardant, la 51e ligne est suspecte. La 50e ligne obtient un enregistrement spécifique de la table des tâches et l'assigne à @task. Et à la ligne 51, il y a une instruction if indiquant si elle est mise à jour. Faites attention à @task ici. Puisque la mise à jour est une action qui remplace les données mises à jour, elle est également enregistrée dans une table via le modèle, vous avez donc besoin de quelque chose. Il s'agit d'un paramètre puissant pour empêcher l'enregistrement / la mise à jour involontaire des données. Où sont les paramètres forts?

Vérifiez les paramètres forts


private
def task_params
  params.require(:task).permit(:content, :point_id).merge(user_id: current_user.id)
end

Il est déjà préparé sous privé et est également requis lors de la création. Il fallait passer le task_params défini ici comme argument. Par conséquent, si le nombre d'arguments n'était pas correct, il était grondé et provoquait une erreur.

Bonne réponse

def update
    @task = Task.find(params[:id])
    if @task.update(task_params)← Ajouté ici
      redirect_to root_path
    end

Cela a pu éliminer l'erreur.

Recommended Posts

Résoudre ArgumentError dans TasksController # update