Dans le cadre de mon apprentissage de rails, je fait un petit site en local, et là je bloque sur qqchose que je ne comprend pas.
C'est un petit forum, et j'ai un formulaire pour créer une nouvelle discussion.
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <h2>Nouvelle discussion</h2> <p style="color: green"><%= flash[:notice] %></p> <% form_tag :action => 'create' do %> <%= render :partial => 'new' %> <%= submit_tag "Envoyer" %> <% end %>
Donc je crée une nouvelle discussion et un nouveau message. et je demande d'afficher les erreurs avec <%= error_messages_for 'discussion' %> et <%= error_messages_for 'message' %>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <%= error_messages_for 'discussion' %> <%= error_messages_for 'message' %> <p><label for="discussion_title">Titre du sujet</label><br/> <%= text_field 'discussion', 'title' %></p> <p><label for="message_contenu">Contenu</label><br/> <%= text_field 'message', 'contenu' %></p>
Sauf que les erreurs ne s'affiche que pour le modèle message, si il y a une erreur avec la discussion. celle-ci n'est pas sauver dans la base de donnée mais les erreurs ne veulent pas s'afficher.
voilà mes deux modèles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Message < ActiveRecord::Base validates_presence_of('contenu', :message => "Votre message est vide") endet la méthode new du controleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Discussion < ActiveRecord::Base validates_presence_of('title', :message => "Votre titre est vide") validates_presence_of('creator', :message => "message") end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 def new end def create if request.get? else @discuss = Discussion.new(params[:discussion]) @discuss.state = 1 @discuss.creator = session[:user_pseudo] if @discuss.save @message = Message.new(params[:message]) @message.author = session[:user_pseudo] @message.id_discussion = @discuss.id if @message.save flash[:notice] = "Message correctement envoyé" redirect_to :action => 'index' else @discuss.destroy flash[:notice] = "Faut un contenu à votre message" render :action => 'new' end else flash[:notice] = "Faut un titre à votre message" render :action => 'new' end end end
donc si vous pouviez m'éclairé. Pourquoi les messages du modèle discussion ne s'affichent pas alors qu'ils sont bien détectés, puisque que mes notice s'affiche?
Partager