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. 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 `[]’