2013-05-09 191 views
0

我有一些嵌套的资源。这里有一个例子:Rails路由,在资源路径中使用非model_id的路由

resources :contests do 
    resources :scoring_periods do 
     resources :entries 
    end 
    end 

我最终想有一个看起来像下面这样的URL:

/contests/1/scoring_periods/10/entries/new 

这里美中不足的是,在scoring_periods的/ 10 /不是ScoringPeriod#ID 。在这种情况下,它是另一个名为period_count的属性。我希望能够在URl中引用period_count而不是ID,因为我的系统后来可能有数百万个ID,并且在那里列出它并不直观。实际的period_count数字对参加本次比赛的用户更有意义。

有没有办法在routes.rb中搜索资源条目,以允许我通过:scoring_period_id以外的属性引用scoring_periods?

+1

你知道吗,资源不应该有深刻的不止一个水平? (这很旧但很实用:http://weblog.jamisbuck.org/2007/2/5/nesting-resources) – Pigueiras 2013-05-09 22:05:18

回答

1

像这样的东西应该工作:

resources :contests do 
    scope path: '/scoring_periods/:period_count/' do 
    resources :entries 
    end 
end