Je crée une application de blog de base et je rencontre des problèmes d'affichage des messages d'erreur lorsqu'un utilisateur essaie de soumettre un commentaire vide. Au lieu d'obtenir un beau message d'erreur, un message d'erreur d'enregistrement actif avec la validation correcte erorrs. Tels que
ActiveRecord::RecordInvalid in CommentsController#create
Validation failed: Name can't be blank, Email can't be blank
Comment afficher les messages d'erreur pour les validations de ressources imbriquées?
Dans mon article/vue spectacle que j'ai le code suivant:
<%= form_for([@article, @article.comments.build]) do |f| %>
<%= render "shared/error_messages", :target => @article %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<p><%= f.submit %></p>
<% end %>
Mes messages d'erreur regards partiels comme celui-ci:
<% if target.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(target.errors.count, "error") %> prohibited this record from being saved:</h2>
<ul>
<% target.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
Je sais la réponse est simple mais je ne peux pas la comprendre.
Créer une action dans le contrôleur de commentaires:
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.build(params[:comment])
respond_to do |format|
if @comment.save
format.html { redirect_to(@article, :notice => 'Comment was successfully created.') }
format.xml { render :xml => @article, :status => :created, :location => @article }
else
format.html { render :action => "articles/show" }
format.xml { render :xml => @comment.errors, :status => :unprocessable_entity }
end
end
J'ai ajouté l'action créée dans le contrôleur de commentaires. Merci! – RobertH
Ah, maintenant j'ai l'application rediriger vers le bon contrôleur et l'action, mais pas de messages d'erreur. Merci de m'avoir mis sur la bonne voie. – RobertH
Résolu, postera la solution, merci encore. – RobertH