Forum: Ruby on Rails One App, two REST questions - Nested Ressources, meaningful

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
2808b5c359edcb77ec783e3793c8d381?d=identicon&s=25 Rafael (Guest)
on 2007-06-17 17:30
(Received via mailing list)
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



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
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:

but not

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 %>
6: <% form_for(:candidacy, :url => candidacies_path(), :html =>
{ :method => :post, :multipart => true}) do |f| %>
8: <%

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])

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

  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'
821395fe70906c8290df7f18ac4ac6cf?d=identicon&s=25 Rick Olson (Guest)
on 2007-06-17 19:19
(Received via mailing list)
On 6/17/07, Rafael <> 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:

map.resources :vacancies do |v|
  v.resources :candidacies  # candidacies_url

map.resources :vacancies do |v|
  v.resources :candidacies  # vanancy_candidacies_url
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 Olson
2808b5c359edcb77ec783e3793c8d381?d=identicon&s=25 Rafael (Guest)
on 2007-06-17 21:28
(Received via mailing list)
Thank you very much, lets have a try :-)
2808b5c359edcb77ec783e3793c8d381?d=identicon&s=25 Rafael (Guest)
on 2007-06-18 15:50
(Received via mailing list)
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
9ea9b4ca5025de41f3d491adde9e4b6e?d=identicon&s=25 Brian Dainton (Guest)
on 2007-06-18 16:39
(Received via mailing list)
It's a spelling error, likely in your link_to call.  You have
'candicacies', not 'candidacies'.

- BD
2808b5c359edcb77ec783e3793c8d381?d=identicon&s=25 Rafael (Guest)
on 2007-06-18 16:54
(Received via mailing list)
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:
action_controller/routing.rb:1266:in `generate': No route matches

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!


This topic is locked and can not be replied to.