# Silly little link\_to question

**URL:** <https://www.ruby-forum.com/t/silly-little-link-to-question/190562>\
**Category:** Rails\
**Created:** [June 22, 2010, 8:36pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562 "2010-06-22T20:36:01Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 22, 2010, 8:36pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/1 "2010-06-22T20:36:01Z")

</div>

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](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!

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 22, 2010, 8:53pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/2 "2010-06-22T20:53:00Z")

</div>

How do you have this on your routes file?

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 22, 2010, 8:57pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/3 "2010-06-22T20:57:06Z")

</div>

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’

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 22, 2010, 11:40pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/4 "2010-06-22T23:40:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 22, 2010, 9:02pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/5 "2010-06-22T21:02:58Z")

</div>

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](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 🙂

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 24, 2010, 12:50pm UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/6 "2010-06-24T12:50:54Z")

</div>

Gotcha! Thanks for your assistance!

---

<div class="post-metadata">

**Author:** ![richardsugg](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/5f9b8f/32.png) [@richardsugg](https://www.ruby-forum.com/u/richardsugg)\
**Post date:** [June 23, 2010, 10:44am UTC](https://www.ruby-forum.com/t/silly-little-link-to-question/190562/7 "2010-06-23T10:44:49Z")

</div>

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
