使用动态前缀生成RESTful路由

时间:2012-10-04 21:08:15

标签: ruby-on-rails ruby-on-rails-3 rest routing

我有一个用Rails 3.2.8编写的电子商务网站,该网站销售音乐活动门票。到目前为止,我一直在应用程序中使用简单的RESTful路由:

/ => default route: /events
/events
/events/1
/events/1/new
/events/2
...

以前所有的事件都发生在同一个地方,但是从现在开始会有两个地方,让我们说“Morumbi”和“Maracanã”。 Place 是应用程序中的模型,它是事件之间非常重要的区别。所以我想让地名成为路径的一部分,并且有这样的路线:

/ => default route: page to choose place
/morumbi => same as /morumbi/events
/morumbi/events/1
/morumbi/events/1/new
/maracana => same as /maracana/events
/maracana/events/2
...

虽然我知道如何使用#match方法做到这一点,但我已经使用更易维护的#resources方法创建了大量路由,并且我想保留它们。< / p>

您是否知道避免使用#match的解决方案?

1 个答案:

答案 0 :(得分:3)

您需要使用#scope方法:

scope path: ':place_name', as: 'place' do
  resources :events
  ...
end

因此GET /morumbi/events/1会使用参数EventsController#showid: '1'来调用place_name: 'morumbi'