Quick Compare Question...

Hello,
My controller is supposed to compare values from a particular column in
two different DB tables to find matches and non-matches. I keep on
getting an "undefined local variable or method 'bes'" error. My
controller looks like this:

class CompareController < ApplicationController
  def index
    @bes = Bes.find(:all)
    @prov = Import.find(:all)

    @matches = @prov.select { |prov| prov.prov_service_number ==
bes.bes_phonenumber }
  end
end

Above, BES is a table housing my company's BlackBerry mobile phone
information, and PROV is a table housing our provider's records. My view
looks like this:

<% for import in @matches %>
  <tr>
    <td><%= bes.bes_displayname %></td>
    <td><%= bes.bes_phonenumber %></td>
    <td><%= import.prov_service_number %></td>
  </tr>
<% end %>

Can anybody help me with this? I'm still a newbie on the different types
of variables and RoR in general.

Thank you very much!
- Jeff Miller

"@matches = @prov.select { |prov| prov.prov_service_number ==
bes.bes_phonenumber }"
should by @matches = @prov.select { |prov| prov.prov_service_number ==
@bes.bes_phonenumber }

you are declaring a variable but not using it. I dont' think the view
will work as is.....

I think you'll save yourself some time by doing a find_by_sql here:

@matches = Bes.find_by_sql(
   "SELECT BES.bes_phonenumber number, BES.bes_displayname name, PROV.prov_service_number prov_number
   FROM PROV, BES WHERE PROV.provider_service_number = BES.bes_phonenumber")

That way your database can do the heavy lifting, matching up all the records. Then in your view:

<% for match in @matches -%>
   <tr>
     <td><%= match.name %></td>
     <td><%= match.number %></td>
     <td><%= match.prov_number %></td>
   </tr>
<% end %>

Does something like this seem sensible?