hi i define in my model for example this validation: validates_presence_of :commentaires but when in my form my field is empty i have this error 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 Can you help me? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
It would help I think if you could past the last five to 10 lines of the stack trace. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Mazraelle Mazraelle wrote:> hi > > i define in my model for example this validation: validates_presence_of > :commentaires > but when in my form my field is empty i have this error > > > 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 > > Can you help me?i had the same issue. mine was because i needed to set my arrays again from other models before the redirection back to the new page again. here''s what i had to do: def new @item = Item.new @item_types = ItemType.find(:all) @attributes = Attribute.find(:all) @wears = Wear.find(:all) respond_to do |format| format.html # new.html.erb format.xml { render :xml => @item } end end then in my create function i had to set the variables again: def create @item = Item.new(params[:item]) respond_to do |format| if @item.save flash[:notice] = ''Item was successfully created.'' format.html { redirect_to(@item) } format.xml { render :xml => @item, :status => :created, :location => @item } else @item_types = ItemType.find(:all) @attributes = Attribute.find(:all) @wears = Wear.find(:all) format.html { render :action => "new" } format.xml { render :xml => @item.errors, :status => :unprocessable_entity } end end end hope that helps -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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]
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
in my view
<td>
<%= text_field :jour, params[:jour]%>
</td>
<td>
<%=
select(''fraisreel'',''lot_id'',@lots,{:selected
=>@selected_lot},{}) %>
</td>
<td class="tt">
<%= text_field ''fraisreel'',
''hotel'', "size" =>6
,"class"=>"sChamps" %>EURO
</td>
<td class="tt">
<%= text_field ''fraisreel'',
''restaurant'', "size"
=>6,"class"=>"sChamps" %>EURO
</td>
<%=
hidden_field(''fraisreel'',''date_jour'',:value
=>@date)%>
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Mazraelle Mazraelle wrote:> 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] > 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 > > > in my view > > <td> > > <%= text_field :jour, params[:jour]%> > </td> > <td> > <%= select(''fraisreel'',''lot_id'',@lots,{:selected > =>@selected_lot},{}) %> > </td> > <td class="tt"> > <%= text_field ''fraisreel'', ''hotel'', "size" =>6 > ,"class"=>"sChamps" %>EURO > </td> > <td class="tt"> > <%= text_field ''fraisreel'', ''restaurant'', "size" > =>6,"class"=>"sChamps" %>EURO > </td> > <%= hidden_field(''fraisreel'',''date_jour'',:value =>@date)%>here there is the next line in the error page Extracted source (around line #46): 43: <%= text_field :jour, params[:jour]%> 44: </td> 45: <td> 46: <%= select(''fraisreel'',''lot_id'',@lots,{:selected =>@selected_lot},{}) %> 47: </td> 48: <td class="tt"> 49: <%= text_field ''fraisreel'', ''hotel'', "size" =>6 ,"class"=>"sChamps" %>EURO -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Mazraelle Mazraelle wrote:> Extracted source (around line #46): > > 46: <%= select(''fraisreel'',''lot_id'',@lots,{:selectedThis line (erb line of code) is diving off into ruby code. The log/development.log file will have a full stack trace back. You will see this line a few lines down from the top. The next line up will probably be a call to select. etc. You need to follow the stack and see which variable it is trying to use when it gets the error. My *guess* is that @lots is empty. You can do a couple of things. One thing would be to add a debug line in your controller method just before calling the render (or just before it returns). Print out @lots, etc. Another possibility (I''ve never tried this) <% debugger %> just before this line. Then invoke your server with ./script/server --debugger When you hit the line before, it will plop into the debugger. You can then poke around and see what is happening. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---