I want to show a page that lists people that belong to a particular
company (each person has a company_id). My link_to looks like
<%= link_to "people", :controller => "people", :action =>
"by_company", :company_id => @company.id %>
which produces the link
http://my-server-name/people/by_company?company_id=1
However, it errors with
Couldn't find Person with ID=by_company
{"id"=>"by_company",
"company_id"=>"1"}
Why would the id be set to "by_company"? Shouldn't that be the
action?
Thanks!
How do you have this on your routes file?
Routes file:
ActionController::Routing::Routes.draw do |map|
map.resources :people
map.resources :users
map.root :controller => "homepage"
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end'
Well, I got around it, but I'd like to know why the original way
didn't work because I'm certain this will come up again. Here's what
I did:
I changed the link_to to be
<%= link_to "people", :controller => "people", :action =>
"by_company", :id => @company.id %>
which created the link
http://my-server-name/people/by_company/1
Thanks for looking at this. I'm sure this is a very easy question for
someone who has done this a while, but that would not (yet) be me 
Agoofin1
(Agoofin)
5
What do you have in your by_company method?
looks like you had in your find statement - params[:id] and it should
have been params[:company_id]
You might take a look at generating a class method in your model file:
def self.by_company( anId )
find(:all, :conditions => ["company_id = ?", anId] )
end
The you can refer to this by Model_name.by_company( x )
Or a named scope - some things to look at.
Hope this helps
sure,
if you wanted to name it “:company_id=>@company.id”
then in the routes file you would have to do
map.connect ‘:controller/:action/:company_id’
or else it will interpet as one cgi query parameter
regards
Gotcha! Thanks for your assistance!