Thanks Fred, passing location as a hash works much better.

On Sep 5, 7:57 pm, Frederick Cheung <[email protected]>
wrote:
> On Sep 6, 2:26 am, Glen <[email protected]> wrote:
>
> > I'm having trouble passing context data with a request.  Rails keeps
> > complaining that it can't convert string to integer which is
> > questionable in and of it's self.  
>
> The error you're getting means "I'm an array and you trying to access
> a string index". You get the same error if you do [1,2,3]['foo'] in
> the console
> I'd check that the parameters you receive are what you expected (did
> you really mean to use [] in your link_to call ?)
>
> Fred
>
> >Origionally the data was being
> > added to the query string as a string so I thought it might be an
> > encapsulation issue and sent them as actual integers but it seems to
> > make no difference.  Here is the code:
>
> > This is the action in the first controller:
>
> >         def show
> >                 @jobs = Job.all(:conditions => ["city_id = ? AND region_id 
> > = ? AND
> > country_id = ?", params[:city], params[:region], params[:country]])
> >                 @city = City.find(params["city"])
> >                 @region = Region.find(params["region"])
> >                 @country = Country.find(params["country"])
> >                 @companies = []
> >                 @titles = []
>
> >                 @jobs.each do |job|
> >                         @companies << job.company
> >                 end
>
> >                 @companies.uniq!
>
> >                 @jobs.each do |job|
> >                         @titles << job.title
> >                 end
>
> >                 @titles.uniq!
> >         end
>
> > This is the link that is causing the problem (it is in the show view
> > for the action above):
>
> > <%= link_to title, by_title_jobs_url(:title => title, :location =>
> > [:city => @city.id, :region => @region.id, :country => @country.id])
> > %>
>
> > And here is the action being called by the link:
>
> >         def by_title
> >                 if params[:location]
> >                         @jobs = Job.find(:all, :conditions => ["title = ? 
> > AND city_id = ?
> > AND region_id = ? AND country_id = ?", params["title"], params
> > ["location"]["city"], params["location"]["region"], params["location"]
> > ["country"]])
> >                 elsif params[:company]
> >                         @jobs = Job.find(:all, :conditions => ["title = ? 
> > AND company_id
> > = ?", params["title"], params["company"]])
> >                 else
> >                         @jobs = Job.find(:all, :conditions => ["title = ?", 
> > params
> > ["title"]])
> >                 end
> >         end
>
> > I repeatedly get the following error message:
>
> >  TypeError in JobsController#by_title
>
> > can't convert String into Integer
>
> > RAILS_ROOT: /Users/fenris/Projects/Rails/jobsnob
> > Application Trace | Framework Trace | Full Trace
>
> > /Users/fenris/Projects/Rails/jobsnob/app/controllers/
> > jobs_controller.rb:46:in `[]'
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to