2010-11-18 26 views
2
contrôleur

Dans mes 3 rails app, j'ai une route qui se présente comme suit, tout en appelant les routes de rake:Aucun itinéraire correspond

topic_snippets GET /topics/:topic_id/snippets(.:format) {:action=>"index", :controller=>"snippets"} 

Dans routes.rb

resources :topics do 
member do 
    get 'get_topics' 
end 
resources :snippets, :only => [:index] 
end 

À mon avis, je am faisant référence à cette voie comme suit (où @name = « extraits »):

<%= send("topic_#{@name}_path")%> 

Lors de l'exécution de la ligne précédente, je reçois l'erreur de routage suivant, n ot sûr pourquoi:

No route matches {:controller=>"snippets"} 

Mise à jour: J'ai trouvé une autre question dont les réponses semblent impliquer que le devrait fonctionner au-dessus: Dynamically construct RESTful route using Rails

Merci
Anand

+0

Mais qu'est ce que '@ topic' et peut-être plus important encore, quel est le' id' de cet objet? –

+0

Le paramètre @topic semble non pertinent - même si je le supprime, j'obtiens la même erreur. – Anand

+0

Je viens de supprimer le paramètre @topic de la question – Anand

Répondre

3

OK, je l'ai trouvé - le commentaire de Ryan fourni l'indice.

Je ne passais pas dans @topic, ce qui est requis. Si j'enlève @topic, il essaye de juste arriver à/snippets/qui n'a pas de route. J'ai placé @topic à un sujet valide avant d'appeler cette ligne et cela fonctionne. Merci, Ryan!

0

Avez-vous essayé

<%= send(eval("topic_#{@name}_path"), @topic)%> 
+0

J'ai essayé d'utiliser eval - cela me donne la même erreur, sauf que cette fois-ci il me montre l'emplacement dans le code des rails où l'erreur de routage a été soulevée. – Anand