2011-09-09 48 views
0

有沒有辦法來避免這樣做...的Rails 3 - 嵌套資源和會員/收藏

resources :parents do 
    resources :children do 
    collection do 
     get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ } 
    end 
    end 
end 

resources :children do 
    collection do 
    get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ } 
    end 
end 

我認爲這將有可能只是這樣做......

resources :parents do 
    resources :children do 
end 

resources :children do 
    collection do 
    get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ } 
    end 
end 

之所以存在是我希望能夠使用這兩種路線的......

/children/search/term/0/10 
/parents/1/children/search/term/0/10 

回答

2

這似乎這樣的伎倆

def define_children 
    resources :children do 
    collection do 
     get :search 
    end 
    end 
end 

define_children 
resources :parents do 
    define_children 
end 

:parent_id將在params如果通過parent路線已被使用來設置。否則它不會出現。爲了清楚起見,我省略了限制。你也應該使.format可選。

+0

似乎是最好的方式。您仍然可以擁有自己的資源和所有這些,但投入此路線可爲您提供資源功能並保持清潔。 –

+0

也許我不夠清楚。我試圖做到這一點,所以只需管理兒童資源部分,我就可以使用所有兒童行動。我不想宣佈它兩次。這場比賽並沒有幫助我。我不希望在子資源中聲明搜索操作以及父資源。 – Altonymous

+0

我改變了我的解決方案 - 我認爲這符合您的標準 –