Je travaille sur un site Web relativement simple avec (actuellement) une seule ressource. J'ai un formulaire à GET /maps/new
qui soumet des données pour une nouvelle carte à POST /maps
, qui redirige vers GET /maps/:id
après l'achèvement. Le problème ici est que si la validation échoue, il rend le formulaire new-map, donc l'URL est toujours /maps
. Mais la redirection vers /maps/new
perd les erreurs de validation (et les données de carte précédemment entrées).La soumission du formulaire avec des erreurs affiche le formulaire + erreurs à une URL différente du formulaire original
Ceci est mon premier vrai site Web basé sur Rails, donc je suis sûr que c'est probablement quelque chose de fondamental qui me manque. Voici mes new
et create
actions, à la fois à peu près inchangé par rapport à l'échafaudage généré:
def new
@map = Map.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @map }
end
end
def create
@map = Map.new(params[:map])
respond_to do |format|
if @map.save
flash[:notice] = 'Map was successfully created.'
format.html { redirect_to(@map) }
format.xml { render :xml => @map, :status => :created, :location => @map }
else
format.html { render :action => 'new' }
format.xml { render :xml => @map.errors, :status => :unprocessable_entity }
end
end
end
Comment puis-je obtenir l'URL de rester sur /maps/new
pour la forme, mais aussi de maintenir les données de formulaire intermédiaires et des erreurs?
Il fait! Merci beaucoup! – Twisol
Scratch que, cela ne fonctionne pas lorsque j'essaie d'enregistrer un vrai objet Map comme ça: Je reçois une erreur de débordement de cookie. Dans des circonstances normales, un débordement de cookie serait merveilleux, mais ... La recherche continue. – Twisol
Le problème est que la taille de cet objet est supérieure à 2k. Vous pouvez passer à l'enregistrement p_store ou actif pour stocker vos sessions. –