2011-02-06 17 views
0

我有這些路線:Rails的雙重嵌套的航線,打破了

map.resources :categories do |category| 
    category.resources :sub_categories 
    end 

    map.resources :sub_categories do |sub_category| 
    sub_category.resources :events 
    end 

這僅僅是這樣,這並不知道該網址,進行雙重嵌套的,我要的網址保持兩個對象深的最多。

問題是事件,我想需要有一個/ - 行業標準/:sub_category_id爲串流中刪除,但使用

map.resources :events, path_prefix => '/sub_categories/:sub_category_id' 

讓我像

event_path 
路線

我想已經是

sub_category_event_path 

因爲任何時候用戶想要到一個* sub_category *,我希望URL提供* category_id *,但是如果用戶想看到一個事件,必須提供一個sub_category_id。

回答

0

我好不容易纔得到這個工作..但我要離開這裏的人自定義助手投票希望爲@wuputah建議,還是我的方法。

map.resources :events, :path_prefix => 'sub_categories/:sub_category_id', :name_prefix => 'sub_category_' 

產生我在尋找..

+0

FWIW,變更機構名稱的路由,而不是接受這些參數。 – wuputah 2011-02-06 05:20:52

1

你說得對,它的確生成event_path,但是event_path將需要:sub_category_id選項。爲了得到一個sub_category_event_path幫手,只寫一個:

class ApplicationController < ActionController::Base 
    private 
    def sub_category_event_path(sub_category, event) 
    event_path(event, :sub_category_id => sub_category) 
    end 
    helper_method :sub_category_event_path 
end 

不幸的是,如果你想sub_category_event_url,你必須寫一個了。

Rails 3中確實有淺路線您可能感興趣的一些新的支持。考慮升級!