我们的网站是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 /命令/新?参数...
我可以在不更改路径资源或控制器位置的情况下完成此操作吗?
答案 0 :(得分:2)
简而言之,不,你不能..
您必须在routes.rb
中定义这样的嵌套路由,这将改变paths
,因此需要更改所有依赖项。
说实话,
https://example.com/product_name/orders/new?params
这个网址对我来说没有意义..
理想情况下,如果我错了,请纠正我,order
必须与has_many
有products
关系。然而,网址传达了不同的故事...
答案 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 ...