The error occurred while evaluating nil.each

I’m leaving some fields empty and after i sibmited it shows me teh
following error,

THIS IS THE ERROR THAT IT DISPLAYS

NoMethodError in Item_packages#create

Showing item_packages/_form.erb where line #3 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.each

Extracted source (around line #3):

1:
2: function select_html_code(the_id){
3: <% for measurement_formats in @measurement_formats %>
4: if(the_id==’<%= measurement_formats.id %>’){
5: document.getElementById(’<%= measurement_formats.id
%>’).style.position=‘static’
6: document.getElementById(’<%= measurement_formats.id
%>’).style.visibility=‘visible’

THIS IS MY CONTROLLER:

def new
@item_package = ItemPackage.new(:package_color_id =>
params[:package_color_id])
@measurement_formats = MeasurementFormat.find(:all)

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @item_package }
end

end

the weird thing is that if i fill out the entire form,
it’ll show no problems?
any idea to this weird problem?

thanks in advanced

On Jun 15, 4:49 am, RoR_Nb [email protected] wrote:

the weird thing is that if i fill out the entire form,
it’ll show no problems?
any idea to this weird problem?

If the problem is the create action, it would make sense to show us
the code for the create action, not the new action. My guess is that
in your create action you are following the standard pattern of
rerendering the new template if validation fails. However, in your
create action you don’t initialize @measurement_formats, hence the
error.

Fred

On Sun, Jun 15, 2008 at 5:47 AM, Frederick C. <
[email protected]> wrote:

in your create action you are following the standard pattern of
rerendering the new template if validation fails. However, in your
create action you don’t initialize @measurement_formats, hence the
error.

And, since the nil.each might be a mystery to a nuby, let me point out
that:

for measurement_formats in @measurement_formats
#…
end

is just Ruby syntactic sugar for

@measurement_formats.each do | measurement_formats |
#…
end

BTW I’d suggest renaming the local measurement_formats (without the @)
to
measurement_format in either case, since it’s going to be a single
measurement_format at any given time.

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/