Probleme avec les validations

bonjour,

quand j’ajoute des validations a mon formulaire j’ai cet erreur si le
champs n’est pas rempli: exemple dans le cas de validates_presence_of

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject

Pouvez vous m’aider a resoudre se ^probleme,
Merci

Pouvez vous m’aider a resoudre se ^probleme,

En général, lorsque l’on a une telle erreur, il y a dans le message
d’erreur la ligne fautive (fichier et numéro de ligne) ; ainsi tu verras
quel objet est nul. Si ça ne te suffit pas, donne-nous plus d’infos,
notamment le bout de code qui coince !

gUI

Guillaume B. wrote:

Pouvez vous m’aider a resoudre se ^probleme,

En g�n�ral, lorsque l’on a une telle erreur, il y a dans le message
d’erreur la ligne fautive (fichier et num�ro de ligne) ; ainsi tu verras
quel objet est nul. Si �a ne te suffit pas, donne-nous plus d’infos,
notamment le bout de code qui coince !

gUI

merci mais je ne vois pas :frowning:

def new

@fraisreel = Fraisreel.new
@salarie_id =session[:user_id]
liste_deroulante


@mois = session[:mois]
@annee = session[:annee]
@date = @annee + "-" + @mois

end

def create
@jour_form = params[:jour]
#on complete la date du jour renseigné au niveau du tableau frais
reel avec le jour qui a été saisi
params[:fraisreel][:date_jour]+="-" + @jour_form.to_s
@fraisreel_form = Fraisreel.new(params[:fraisreel])

if @fraisreel_form.save
  flash[:notice] = 'La nouvelle ligne de Frais Reel a été ajouter 

avec succes.’
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end

def liste_deroulante
@resultat = Fraisreel.find_liste_affaire_salarie(session[:user_id])
for resultat in @resultat
@resultat2 = Fraisreel.find_liste_lot(resultat.projetdept)
@lots1 = @resultat2.map{|of| [resultat.code_projet + " - " +
of.code_lot, of.lotid]}
end
@resultat = Fraisreel.find_liste_affaire_tous_le_monde
@lots2 = @resultat.map{|of| [of.code_projet + " - " + of.code_lot,
of.lotid]}
@lots = @lots2 + @lots1
end

mon formulaire:

      <%= text_field :jour, params[:jour]%>
    </td>
    <td>
        <%= select('fraisreel','lot_id',@lots,{:selected 

=>@selected_lot},{}) %>



<%= text_field ‘fraisreel’, ‘hotel’, “size” =>6
,“class”=>“sChamps” %>€

<%= hidden_field(‘fraisreel’,‘date_jour’,:value =>@date)%>

et voici le message d’erreur

NoMethodError in Notedefraisreel#create
Showing app/views/notedefraisreel/_form.rhtml where line #46 raised:

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject

Extracted source (around line #46):

43: <%= text_field :jour, params[:jour]%>
44:
45:


46: <%= select(‘fraisreel’,‘lot_id’,@lots,{:selected
=>@selected_lot},{}) %>
47:
48:
49: <%= text_field ‘fraisreel’, ‘hotel’, “size” =>6
,“class”=>“sChamps” %>€
        <%= select('fraisreel','lot_id',@lots,{:selected 

=>@selected_lot},{}) %>

apparemment ce serait donc cette ligne qui coince. je pencherais pour
@selected_lot, vu que je ne le vois initialisé nulle part ?

gUI

Guillaume B. wrote:

        <%= select('fraisreel','lot_id',@lots,{:selected 

=>@selected_lot},{}) %>

apparemment ce serait donc cette ligne qui coince. je pencherais pour
@selected_lot, vu que je ne le vois initialis� nulle part ?

gUI

Merci de ta reponse
Je viens de faire le test en enlevent le selected_lots et j’ai toujours
la meme erreur

Mazraelle M. wrote:

Guillaume B. wrote:

        <%= select('fraisreel','lot_id',@lots,{:selected 

=>@selected_lot},{}) %>

apparemment ce serait donc cette ligne qui coince. je pencherais pour
@selected_lot, vu que je ne le vois initialis� nulle part ?

gUI

Merci de ta reponse
Je viens de faire le test en enlevent le selected_lots et j’ai toujours
la meme erreur

Qu’obtiens-tu avec un @lots.inspect ?

le .inject est utilisé dans la fonction options_for_select

http://api.rubyonrails.com/classes/ActionView/Helpers/FormOptionsHelper.html
(afficher le code source d’options_for_select)

j’obtiens:
["-toto-A106",“10834”],["-tito-A6","“10834],[”-poto-op06",“5963”],["-tolo-M6",“5686”]