I am new to Ruby and to Ruby on Rails and have spent the last few days
trying to get my head around it. I think I am already hooked but am
suffering badly from years of programming a non-OO RDBMS. I am trying
to learn by attempting to produce a system for my work.
I have a main table sdocs which has a field supplier_id which is an
entry in another table (suppliers) to lookup supplier name etc. At the
moment I am not using the id field of suppliers in an attempt to get
around the following error. (The agile development book suggests that
the nil error only results from a search on a key and not from a search
on other fields but I am still having the problem.)
“You have a nil object when you didn’t expect it!
The error occured while evaluating nil.suppname”
Sorry the code is such a mess at the moment because I have tried many
different possible solutions.
Part of the code follows:
<% require ‘pp’ %>
<% for sdoc in @sdocs %>
<% supp = Supplier.find(:first, :conditions => [ "suppcode = ?" , sdoc.supplier_id]) %> <%= supp.suppname %>
<%= sdoc.rm_id %>
<%= sdoc.expdate %>
<%= link_to 'Edit', :action => 'edit', :id => sdoc %>
<%= link_to 'Destroy', { :action => 'destroy', :id => sdoc }, :confirm => 'Are you sure?' %>
Where it tries to display supp.suppname I originally had
sdoc.supplier.suppname. This was when I had a link
using foreign keys. This works if the foreign key is always present and
always correct but this is not the case with this database.
I have googled for this problem but the suggested solutions do not seem
to work. Things like the following have not helped.
<% if sdoc.supplier.nil %>
“test”
<% else %>
<%= sdoc.supplier.suppname %>
<% end %>
I am sure this is all because of my ignorance but I haven’t been able to
find a solution.
As part of debugging I tried pp as above. This is a line straight out
of the agile development book but produces nothing.
Thank you for your help
Steven