Comment afficher un message d'erreur sur les rails de vues?
Je suis novice dans rails
et veulent appliquer la validation sur form
champs.
myviewsnew.html.erb
<%= form_for :simulation, url: simulations_path do |f| %>
<div class="form-group">
<%= f.label :Row %>
<div class="row">
<div class="col-sm-2">
<%= f.text_field :row, class: 'form-control' %>
</div>
</div>
</div>
.....
De Simulation.rb
class Simulation < ActiveRecord::Base
belongs_to :user
validates :row, :inclusion => { :in => 1..25, :message => 'The row must be between 1 and 25' }
end
simulation_controller.rb
class SimulationsController < ApplicationController
def index
@simulations = Simulation.all
end
def new
end
def create
@simulation = Simulation.new(simulation_params)
@simulation.save
redirect_to @simulation
end
private
def simulation_params
params.require(:simulation).permit(:row)
end
Je veux vérifier l'intervalle entier de row
champ dans le modèle de classe et de retourner le message d'erreur si ce n'est pas dans la gamme. Je peux vérifier la plage de code ci-dessus, mais pas en mesure de retourner le message d'erreur
Merci d'avance
apidock.com/rails/ActiveModel/Validations/HelperMethods/... ...Fait.
Je suis en train de faire la même chose. J'en veux pour preuve le message d'erreur dans le formulaire
Je suis en train de faire la même chose. J'en veux pour preuve le message d'erreur dans le formulaire
OriginalL'auteur Amit Pal | 2015-06-27
Vous devez vous connecter pour publier un commentaire.
La clé est que vous êtes en utilisant un modèle de formulaire, un formulaire qui affiche les attributs d'une instance d'un ActiveRecord modèle. Le créer une action du contrôleur prendra soin de la validation de certains (et vous pouvez ajouter plus de validation).
Contrôleur de re-rend
new
Vue lorsque le modèle ne parvient pas à sauverChanger votre contrôleur comme ci-dessous:
Lorsque l'instance du modèle ne parvient pas à sauver (
@simulation.save
retournefalse
), puis lenew
vue est réaffichée.new
Vue affiche des messages d'erreur du modèle qui a échoué à enregistrerPuis à l'intérieur de votre
new
avis, s'il existe une erreur, vous pouvez imprimer tous comme ci-dessous.L'important est ici que vous êtes vérifier si l'instance du modèle dispose de toutes les erreurs et ensuite de les imprimer:
undefined method
erreurs " pour nil:NilClass` à<% if @simulation.errors.any? %>
car il n'est pas en mesure de trouver la@simulation
paramètresédité ma réponse,
redirect_to @simulation
ce que vous essayez de faire avec cette ligne?Toujours la même erreur
oui oublié de référence. voir la modifier.
Voici ma capture d'écran après l'édition des points de vue et contrôleur de dl.dropboxusercontent.com/u/20476478/... sur localhost:3000/simulations/new
OriginalL'auteur Burak
Ce faire -
<% if f.object.errors.each do |message| %>
Essayé de modifier mais c'est de moins en moins de 6 caractères, donc je ne serait pas me laisser faire.OriginalL'auteur Amit Suroliya
Vous avez juste besoin d'ajouter ce code dans le fichier de vue (
myviewsnew.html.erb
):Vérifier la syntaxe complète de
error_messages_for
dans http://apidock.com/rails/ActionView/Helpers/ActiveRecordHelper/error_messages_forOriginalL'auteur Emilio González Montaña