Trying to local variable passed to a partial in a find call and getting nowhere..

My code is..
controller
    zipstring = sprintf("select distinct zip from visits,households
where " +
                  "households.id=visits.household_id and
visits.month='%2d' and visits.year = '%4d' " +
                  "and visits.monthly = 1 order by households.zip;",
datestart.month, datestart.year, dateend, datestart)
    @ziplist = Household.find_by_sql(zipstring)

view - monthly.html.erb
  <%= render :partial=>"monthly_report", :collection => @ziplist %>

view - _monthly_report.html.erb
<%= @oxtotalstring = Household.find(:all, :conditions =>
["households.zip = ?,households.id=visits.household_id,
visits.month=?, visits.year = ?, visits.monthly = '1'",
monthly_report, datestart.month, datestart.year ], :include
=> :visits, :order => "zip" ) %>

model
class Visit < ActiveRecord::Base
  belongs_to :household
class Household < ActiveRecord::Base
  has_many :visits, :dependent => :destroy

when I try this, the monthly_report variable in the partial looks like
this..
Household_zip: "01537"

The only reason I'm using a find call here is that later in the code I
need to render a partial for each record found, then see child tables
from that variable, as in monthly_report.people. From what I've seen,
this functionality is lost using find_by_sql.

if I remove the ? and monthly report from the find call and put a
sample zip code in, it works fine. Is there some way to translate this
to a string I'm missing? I tried monthly_report.to_s and got the same
result.

Thanks for the help

Bob Smith <bsm2th@gmail.com>

first of all, that huge chunk of code in you controller should go in your model, controllers are suppose to remain thin and models are suppose to be fat,
second use named scopes that query you have could be very small and readable with named scopes, and use helpers you have a mess of code in you view and those are the main problems.

Use monthly_report["Household_zip"]