如何自定义网址而不更改资源?

时间:2017-06-09 03:58:19

标签: ruby-on-rails ruby routes

我们的网站是rails 4.2.8和ruby 2.4.1,我们有产品可供出售,所以我们的路线如下:

resources :products 
resources :orders, only: [:new, :create, :destroy] do
        collection do
          get :success
          get :fail
          get :details
        end

所以订单网址如:https://example.com/orders/new?params ...

但我们希望在网址上添加产品名称以用于跟踪目的,例如:

https://example.com/ PRODUCT_NAME /命令/新?参数...

我可以在不更改路径资源或控制器位置的情况下完成此操作吗?

2 个答案:

答案 0 :(得分:2)

简而言之,不,你不能.. 您必须在routes.rb中定义这样的嵌套路由,这将改变paths,因此需要更改所有依赖项。

说实话,

https://example.com/product_name/orders/new?params这个网址对我来说没有意义.. 理想情况下,如果我错了,请纠正我,order必须与has_manyproducts关系。然而,网址传达了不同的故事...

答案 1 :(得分:0)

您必须更改以下路线:

resources :products do
    resources :orders, only: [:new, :create, :destroy] do
        collection do
          get :success
          get :fail
          get :details
    end
end

然后你会得到路线 https://example.com/product_name/orders/new?params ...