Si vous êtes bloqué dans la validation lors de la soumission du contenu du formulaire
Rendre le nouvel écran de publication avec la méthode render
Il devrait y avoir beaucoup de gens qui ont appris en affichant l'erreur ou le contenu qui a été entré
Mais que faire si vous ne pouvez pas utiliser la méthode render
?
En fait, j'utilise l'API Google Map pour le portefeuille sur lequel je travaille.
Lors du rendu d'une page avec render
, il y a un problème que MAP ne soit pas affiché pour une raison quelconque ...
C'était un problème qui pouvait être résolu en modifiant les spécifications, mais je ne voulais pas le changer.
Je vais vous montrer comment réaliser le mouvement ci-dessus sans utiliser render
.
À titre d'exemple dans tasks_controller.rb
Nouvelle action de page de publication nouveau
et
Supposons que vous ayez une action create
qui enregistre un nouveau message.
tasks_controller.rb
def create
@task = Task.new(task_params)
if @task.save
redirect_to @task, notice: 'Vous avez enregistré la tâche.'
else
render :new
end
end
@ task.save
échoue et render: new
sous ʻelseest exécuté, La nouvelle page de publication sera rendue. Après cela, comme vous le savez déjà, vous avez l'impression d'utiliser
@ task.errors.full_messages` dans la vue.
Cela prend la forme d'un ré-accès avec redirect_to
Les instructions d'erreur et le contenu d'entrée sont stockés dans flash
dans l'action.
tasks_controller.rb
def create
@task = Task.new(task_params)
if @task.save
redirect_to @task, notice: 'Vous avez enregistré la tâche.'
else
flash[:error_msgs] = @task.errors.full_messages
flash[:tmp_body] = @task.body
redirect_to new_task_url
end
end
Une déclaration d'erreur dans flash [: error_msgs]
Le contenu du texte est stocké dans flash [: tmp_body]
.
Après cela, c'est OK si vous utilisez la valeur de flash dans la vue de destination d'accès. c'est tout!
Recommended Posts