2010-10-28 4 views
2

J'essaie juste d'obtenir le lien pour pointer vers "user/1/post/1". J'ai essayé d'utiliser link_to avec et sans la méthode: et j'ai obtenu les mêmes résultats.Pourquoi cette ressource imbriquée est-elle link_to à la recherche de "destroy" au lieu de "show"?

ActionController::RoutingError in Posts#index 

Showing /home/test/rails_apps/test_app/app/views/posts/index.html.erb where line #22 raised: 

No route matches {:action=>"destroy", :controller=>"posts", :user_id=>#<Post id: 1, content: "wtf", user_id: 1, created_at: "2010-10-27 20:46:46", updated_at: "2010-10-27 20:46:46">} 

Extracted source (around line #22): 

22:  <td><%= link_to 'Show', user_post_path(p), :method => :get %></td> 
+0

Pouvez-vous poster un peu plus de contexte autour de la ligne 22? – njorden

Répondre

1

Soyez prudent avec l'argument ": method". Il spécifie une méthode HTTP, pas l'action.

+0

Ok. Je l'ai changé pour: obtenir de: spectacle et il est toujours à la recherche de la route détruire. –

+0

Je m'attendrais à ce que ce soit encore un problème, je voulais juste m'assurer que c'était un problème qui ne le causait pas. J'ai aussi voté parce que je ne comprends pas complètement pourquoi cela se produit non plus. – TreyE

0

Vous utilisez user_post_path(p) où je suppose que p => Post Object

Mais cette route également besoin d'un objet utilisateur, d'où cette ressource évaluera à a post of a user

Jetez un oeil à this

Il dit

In addition to using the routing helpers, Rails can also create paths and URLs from an array of parameters. For example, suppose you have this set of routes: 

resources :magazines do 
    resources :ads 
end 

When using magazine_ad_path, you can pass in instances of Magazine and Ad instead of the numeric IDs. 
<%= link_to "Ad details", magazine_ad_path(@magazine, @ad) %> 

You can also use url_for with a set of objects, and Rails will automatically determine which route you want: 
<%= link_to "Ad details", url_for([@magazine, @ad]) %> 

Espérons que cela aide.

Questions connexes