Problème méthodes de type 'path' - Netbeans 6.5


#1

Bonjour,

J’ai un petit problème avec les méthodes de type ‘path’. Je début en
rails et je suis le tutoriel
http://www.buzzdenoel.fr/tutoriel-ruby-on-rails.html sous Netbeans 6.5.
J’ai créé mes deux modèles “contact” et “group” auxquels sont associés
les contrôleurs “groups_controller” et “contacts_controller”. (un groupe
peut avoir plusieurs contacts et un contact est associé a un et un seul
groupe).

En ce qui concerne les vues, je dispose de quatre vues/controleurs
(index.html.erb, show, edit et new). Dans mes vues, je fais appel à des
méthodes de type ‘path’ comme ‘new_group_path’, ‘edit_group_path’…
Cela fonctionne très bien avec les vues associées à “group”.

Mais par contre, j’ai toujours un message d’erreur quand j’utilise les
fichiers ‘path’ de “contacts”.

ex : NoMethodError in Contacts#index

Showing contacts/index.html.erb where line #4 raised:

undefined method `edit_contact_path’

Mon fichier “routes.rb” contient :

ActionController::Routing::Routes.draw do |map|

map.resources :groups, :has_many =>:contacts
map.connect ‘’, :controller => “groups”
end

Mes routes sont :

                  groups GET    /groups

{:controller=>“groups”, :action=>“index”}
formatted_groups GET /groups.:format
{:controller=>“groups”, :action=>“index”}
POST /groups
{:controller=>“groups”, :action=>“create”}
POST /groups.:format
{:controller=>“groups”, :action=>“create”}
new_group GET /groups/new
{:controller=>“groups”, :action=>“new”}
formatted_new_group GET /groups/new.:format
{:controller=>“groups”, :action=>“new”}
edit_group GET /groups/:id/edit
{:controller=>“groups”, :action=>“edit”}
formatted_edit_group GET /groups/:id/edit.:format
{:controller=>“groups”, :action=>“edit”}
group GET /groups/:id
{:controller=>“groups”, :action=>“show”}
formatted_group GET /groups/:id.:format
{:controller=>“groups”, :action=>“show”}
PUT /groups/:id
{:controller=>“groups”, :action=>“update”}
PUT /groups/:id.:format
{:controller=>“groups”, :action=>“update”}
DELETE /groups/:id
{:controller=>“groups”, :action=>“destroy”}
DELETE /groups/:id.:format
{:controller=>“groups”, :action=>“destroy”}
group_contacts GET /groups/:group_id/contacts
{:controller=>“contacts”, :action=>“index”}
formatted_group_contacts GET /groups/:group_id/contacts.:format
{:controller=>“contacts”, :action=>“index”}
POST /groups/:group_id/contacts
{:controller=>“contacts”, :action=>“create”}
POST /groups/:group_id/contacts.:format
{:controller=>“contacts”, :action=>“create”}
new_group_contact GET /groups/:group_id/contacts/new
{:controller=>“contacts”, :action=>“new”}
formatted_new_group_contact GET
/groups/:group_id/contacts/new.:format {:controller=>“contacts”,
:action=>“new”}
edit_group_contact GET /groups/:group_id/contacts/:id/edit
{:controller=>“contacts”, :action=>“edit”}
formatted_edit_group_contact GET
/groups/:group_id/contacts/:id/edit.:format {:controller=>“contacts”,
:action=>“edit”}
group_contact GET /groups/:group_id/contacts/:id
{:controller=>“contacts”, :action=>“show”}
formatted_group_contact GET
/groups/:group_id/contacts/:id.:format {:controller=>“contacts”,
:action=>“show”}
PUT /groups/:group_id/contacts/:id
{:controller=>“contacts”, :action=>“update”}
PUT
/groups/:group_id/contacts/:id.:format {:controller=>“contacts”,
:action=>“update”}
DELETE /groups/:group_id/contacts/:id
{:controller=>“contacts”, :action=>“destroy”}
DELETE
/groups/:group_id/contacts/:id.:format {:controller=>“contacts”,
:action=>“destroy”}
/

Auriez vous une idée d’ou peut venir le problème ?


#2

D’après la déclaration de tes routes, il faut que tu appelles ta route
ainsi, vu que tu as déclaré contacts en tant que ressource de groups
(:has_many => contacts) :

edit_group_contact_path(@group, @contact)

Pour pouvoir appeler une route contacts en dehors du contexte de groups,
il
faut que tu rajoutes un map.ressources :contacts dans tes routes.

2009/3/9 Babiben A. removed_email_address@domain.invalid


#3

Emilien T. wrote:

D’après la déclaration de tes routes, il faut que tu appelles ta route
ainsi, vu que tu as déclaré contacts en tant que ressource de groups
(:has_many => contacts) :

edit_group_contact_path(@group, @contact)

Pour pouvoir appeler une route contacts en dehors du contexte de groups,
il
faut que tu rajoutes un map.ressources :contacts dans tes routes.

2009/3/9 Babiben A. removed_email_address@domain.invalid

Merci beaucoup, je viens de voir le post et je mettais rendu compte de
mon erreur concernant le map.ressources :contacts. Par contre, merci
pour le “edit_group_contact_path(@group, @contact)”, ça fonctionne

Merci beaucoup :slight_smile: