2012-04-12 13 views
1

Ich habe eine verschachtelte Ressource unter meinem Admin-Namespace: Die admin/topic/comments_controller.rb ist eine Ressource unter .Warum werden IDs von verschachtelten Routen umgeleitet?

namespace :admin do 
    resources :topics do 
     resources :comments, :controller => "topic/comments" 
    end 
    end 

gibt mir diese Route löschen:

DELETE
/admin/topics/:topic_id/comments/:id(.:format)
admin/topic/comments#destroy

Und ich einen Link erschaffe Kommentare zu zerstören, wie die folgenden:

# comment = @topic.comment.first
<%= link_to "Destroy", [:admin, comment], :method => :delete %>

erzeugt die folgende Route:

/admin/topics/165/comments/11

Alles scheint korrekt zu sein, außer dass die beiden IDs vertauscht sind. Was mache ich falsch?

+0

Ich fand heraus, dass dies ein Duplikat ist zu http://stackoverflow.com/questions/761360/strange-rails-routing-behaviour -with-nested-resources – lulalala

Antwort

2

können Sie die name_route verwenden stattdessen:

<%= link_to "Destroy", admin_topic_comment_path(@topic, comment), :method => :delete %> 
+0

das generiert 'undefined method admin_topic_topic_comment_path' Fehler – lulalala

+0

Ich aktualisiere meine Antwort mit einer anderen Lösung – shingara

+0

danke, so denke ich, das' [] 'Routing kann nicht alles alleine erreichen. Benannte Routen-Helper-Methoden werden schließlich benötigt. – lulalala

1

<%= link_to 'Destroy', :action => 'destroy', :id => comment.id, :method => :delete %>

oder wenn Sie RESTFUL Routen verwenden:

<%= link_to 'Destroy', delete_comment(:id => comment.id), :method => :delete %>

Wenn mit einem Namensraum-Controller und Routen arbeiten, müssen Sie Verwenden Sie Namespace-Modelle, damit der link_to-Helfer ordnungsgemäß funktioniert.

zB in app/models/admin/comment.rb

class Admin::Comment < Comment 
end 
+0

danke, aber mein derzeitiges Setup hat das nicht. – lulalala

Verwandte Themen