Rails 5 - 如何为脚手架路线添加前缀?

时间:2017-07-16 07:03:56

标签: ruby-on-rails ruby model routes

我已经生成了一个支架模型car

因此,如果我想创建新车,则URL如下所示:/cars/new。我需要将另一个信息传递给URL,最简单的方法是将其作为参数添加到最后,因此URL看起来像/cars/new?listing=123

我想要做的是在网址中获取类似内容:/l/123/cars/new(l =列表)。其他行为也是如此(例如/l/123/cars/4/edit

如何修改此类示例的路线? listing是另一种模式,每个listing都有一辆车。

谢谢

2 个答案:

答案 0 :(得分:0)

AFAIK,您无法通过资源丰富的方式实现这一目标。您必须定义非资源路由才能实现您的目标。例如,cars#new的路由将定义如下

get /:listing_id/:extra_param/cars/new, to: "cars#new"

答案 1 :(得分:0)

我认为您可以使用嵌套资源:

resources :listings do
  resources :cars
end

它会生成listings/:listing_id/cars/:id之类的路线。如果您没有listings控制器,或者您不想为其生成路由,请使用resources :listings, only: [] do ...