2009-03-28 7 views
1

Je reçois une erreur lorsque vous essayez d'utiliser les fonctions d'aide de l'itinéraire des ressourcesRails ressources Restful Routes Fonctions d'assistance et erreur ojet nulle

<%= link_to_remote "Delete", { 
     :method => :delete, 
     :url=> phone_numbers_url(phone_number_display.id), 
     :update => "section_phone" 
     }%> 

et dans mes voies j'ai

 map.resources :phone_numbers 

-je obtenir la erreur suivant

You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.to_sym 

Lorsque j'utilise

:url=> phone_numbers_url(:id => phone_number_display.id) 

Je ne reçois plus l'erreur mais je reçois l'url de unrestful

http://localhost:3000/phone_numbers?id=1 

Je ne comprends pas cette erreur comme phone_number_display.id est non nul

Répondre

2

Vous voulez la version singulière de la route:

phone_number_url(phone_number_display) 
+0

Super, c'était tout. – stellard

0

si vous venez de créer cet itinéraire , vous devrez peut-être redémarrer votre bâtard.

Vous pouvez également exécuter des routes rake pour vérifier l'itinéraire indiqué.

+0

yup Je l'ai fait, cela ne semble pas être le problème – stellard

1

Il ne devrait pas être nécessaire d'entourer les arguments de fin dans {}, puisqu'ils seront quand même transformés en un Hash. Voir le api for link_to_remote. Je ne sais pas si c'est ce qui cause le problème, mais c'est la première chose que j'essaierai.

<%= link_to_remote "Delete", 
      :method => :delete, 
      :url=> phone_numbers_url(phone_number_display.id), 
      :update => "section_phone" 
      %> 

Après cela, si elle ne fonctionne toujours pas, je regarde la partie phone_numbers_url(phone_number_display.id), pour vérifier que je reçois ce que je pense.

+0

Ce code me donne la même erreur – stellard

+0

Combiné avec la solution cela fonctionne. Merci – stellard

1

Il peut aussi être préférable d'utiliser phone_numbers_chemin(phone_number_display.id) comme cela vous donnera le chemin relatif « /phone_numbers?id=1 » au lieu du chemin http://localhost.../.. complet.

Questions connexes