# One App, two REST questions - Nested Ressources, meaningful

**URL:** <https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068>\
**Category:** Rails\
**Created:** [June 17, 2007, 5:30pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068 "2007-06-17T17:30:38Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 17, 2007, 5:30pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/1 "2007-06-17T17:30:38Z")

</div>

Hi everybody,

Thank you for reading this, may you can help me out here, because I  
looked at many ressources and didn’t find a solution yet.

Thank you very much

regards

Rafael

## First question

I have a two model app: vacancy, candidacy

- vacancy has many candidacies
- candidacy belongs to vacancy

How can I access a ressource directly, even if its a nested ressource?  
How can I manage this, that creating a new candidacy can be done  
without having a relation to a vacancy, so that having a vacancy isn’t  
mandatory?  
A cancidacy could be applied in relation to an existing vacancy or a  
spontanous application, and how should then the REST ressources look  
like, is there a DRY way to do it or do I actually have to create two  
different forms?

What is working is this:

vacancies/10200-31/candidacies/new  
but not  
candidacies/new

I got this error:

ActionView::TemplateError (candidacies\_url failed to generate from  
{:action=\>“index”, :controller=\>“candidacies”} - you may have  
ambiguous routes, or you may need to supply additional parameters for  
this route. content\_url has the following required parameters:  
[“vacancies”, :vacancy\_id, “candidacies”] - are they all satisifed?)  
on line #6 of app/views/candidacies/new.rhtml:  
3: \<%= error\_messages\_for :candidacy %\>  
4:  
5:  
6: \<% form\_for(:candidacy, :url =\> candidacies\_path(), :html =\>  
{ :method =\> :post, :multipart =\> true}) do |f| %\>  
7:  
8: \<%  
9:

## Second question

Is this the right way for meaningful URLs?

vacancy\_path(vacancy.vacancy\_number) =\>\>\> vacancies/10200-31

and in the show action

def show  
@vacancy = Vacancy.find\_by\_vacancy\_number(params[:id])  
end

Is this a good way to do it? Or do I have to make other settings in  
the routes.rb, so that the app knows, which attribute is gonna be  
submitted? (The attribute params[:vacancy\_number] is used though)

My routes.rb looks like this

First, this is my routes.rb

map.resources :vacancies do |vacancy|  
vacancy.resources :candidacies  
end

map.connect ‘:controller/service.wsdl’, :action =\> ‘wsdl’

# Install the default route as the lowest priority.

map.connect ‘:controller/:action/:id.:format’  
map.connect ‘:controller/:action/:id’  
end

---

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 17, 2007, 7:19pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/2 "2007-06-17T19:19:50Z")

</div>

On 6/17/07, Rafael [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Rafael
> 
> - candidacy belongs to vacancy
> 
> How can I access a ressource directly, even if its a nested ressource?

Create a second route for it. Things behave a bit differently in edge  
rails (rails 2.0) so it might help to prepare now:

OLD:  
map.resources :vacancies do |v|  
v.resources :candidacies # candidacies\_url  
end

NEW:  
map.resources :vacancies do |v|  
v.resources :candidacies # vanancy\_candidacies\_url  
end  
map.resources :candidacies # candidacies\_url

Edge rails adds the parent name prefix to the nested routes. This way  
you can have both without having clashing routes. Perhaps you should  
use the :name\_prefix option now.

> def show  
> @vacancy = Vacancy.find\_by\_vacancy\_number(params[:id])  
> end

Yup. Routes don’t care what db attribute is pulled.

–  
Rick O.  
[http://lighthouseapp.com](http://lighthouseapp.com)  
[http://weblog.techno-weenie.net](http://weblog.techno-weenie.net)  
[http://mephistoblog.com](http://mephistoblog.com)

---

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 17, 2007, 9:28pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/3 "2007-06-17T21:28:02Z")

</div>

Thank you very much, lets have a try 🙂

---

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 18, 2007, 3:50pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/4 "2007-06-18T15:50:10Z")

</div>

Thanks Rick,

Unfotunately I get always the same error, as before:

Routing Error  
no route found to match “/candicacies/new” with {:method=\>:get}

may you have a hint

---

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 18, 2007, 4:54pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/5 "2007-06-18T16:54:18Z")

</div>

aahhh ;-( thanks! what a painful post :-D))

now it works, but next issue comes up,… you might know why…  
why a normal link\_to\_remote doesn’t work anymore?

\<%= link\_to\_remote(“Delete My Search Profile”, :url =\> {:action  
=\> :reset\_searchcriteria}) %\>

ActionController::RoutingError in Vacancies#index  
Showing app/views/vacancies/list.rhtml where line #7 raised:  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/  
action\_controller/routing.rb:1266:in `generate’: No route matches  
{:action=\>“reset\_searchcriteria”}

I get the same Error, when I try with a member route  
map.resource :vacancies, :member =\> {:reset\_searchcriteria =\> :get}

Any clue?

Thank you very much!

greetinx

Rafael

---

<div class="post-metadata">

**Author:** ![rafael](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/4da419/32.png) [@rafael](https://www.ruby-forum.com/u/rafael)\
**Post date:** [June 18, 2007, 4:39pm UTC](https://www.ruby-forum.com/t/one-app-two-rest-questions-nested-ressources-meaningful/107068/6 "2007-06-18T16:39:16Z")

</div>

It’s a spelling error, likely in your link\_to call. You have  
‘candicacies’, not ‘candidacies’.

- BD
