Zasoby zagnieżdżone + nazwanie trasy

Witam,

Mam model Product, który może mieć wiele komentarzy Comment. Dla produktów routing oparty o zasoby działa normalnie, problem pojawia się gdy chcę zagnieździć komentarze. Chciałbym, aby dla komentarzy zasób był nazwany “komentarze”, jednak dostaję błąd o nieistnieniu podanej trasy. Na przykładzie wygląda to tak:
to działa

http://localhost:3000/produkty/73/comments

to nie działa

http://localhost:3000/produkty/73/komentarze No route matches "/produkty/73/komentarze" with {:method=>:get}
Tablica routingu dla podanych kontrolerów:

[code]map.resources :products,
:as => ‘produkty’,
:collection => {
:manage => [ :post, :get, :delete, :put ],
:perfumes => :get
},
:path_names => {
:manage => ‘zarzadzanie’,
:perfumes => ‘perfumy’
},
:has_many => [ :comments ]

map.resources :comments,
:as => 'komentarze',
:collection => { :manage => [ :post, :get, :delete, :put ] },
:path_names => { :manage => 'zarzadzanie' }[/code]

Zapewne trzeba byłoby dodać opcję :as => ‘komentarze’ w :has_many => [ :comments ], jednak problem w tym jak?

map.resources :products, :as=>'produkty' do |pro|
  pro.resources :comments, :as=> 'komentarze'
end  

mniej więcej tak,
oczywiście inne opcje też musisz podać, ale schemat juz znasz

Tak, wiem o takiej możliwości, ale właśnie jak i gdzie podać resztę opcji, które są w :products i :comments?

bardzo prosto :slight_smile:

  map.resources :users, :has_many => [:invitations], :member => {
                          :unconfirmed_email => :get,
                          :confirm_email => :get,
                          :contact_importer => :get } do |user|

    user.resources :conversations
    user.resources :task_lists do |task_lists|
      task_lists.resources :tasks
    end
    
    user.show_more   'activities/users/:id/show_more.:format',  :controller => 'activities', :action => 'show_more',  :method => :get
  end

Wzięte z Teamboxa bo akurat nie chciało mi się pisać.

Lepiej?

Dzięki, pomogło.

Spoko :wink: