0

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

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

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

/ => 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方法创建了大量路线,我想保留它们。

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

4

1 回答 1

3

您需要使用以下#scope方法:

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

所以GET /morumbi/events/1EventsController#show用参数id: '1'和调用place_name: 'morumbi'

于 2012-10-05T15:11:47.997 回答