Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在不更改资源的情况下自定义url?_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails 如何在不更改资源的情况下自定义url?

Ruby on rails 如何在不更改资源的情况下自定义url?,ruby-on-rails,ruby,routes,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 resources :products do

我们的网站是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
resources :products do
    resources :orders, only: [:new, :create, :destroy] do
        collection do
          get :success
          get :fail
          get :details
    end
end
所以命令url如下:

但我们希望在url上添加产品名称以进行跟踪,例如:

产品名称/orders/new?参数

我能在不改变路线资源或管制员位置的情况下完成这项任务吗?

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

老实说,

https://example.com/product_name/orders/new?params
这个url对我来说毫无意义。。
理想情况下,如果我错了,请纠正我,您的
订单
必须与
产品
有很多关系。但是,url传达了不同的故事…

您必须更改如下路由:

resources :products 
resources :orders, only: [:new, :create, :destroy] do
        collection do
          get :success
          get :fail
          get :details
        end
resources :products do
    resources :orders, only: [:new, :create, :destroy] do
        collection do
          get :success
          get :fail
          get :details
    end
end
然后你就可以走了
是的。。。感谢您的回复,事实上,我们希望更改url,如:…/product\u name/。。。是为了匹配Facebook Pixel API以实现不同的跟踪目的,所以我们可以设置像:/example.com/product_name/*这样的东西来跟踪,作为一名工程师,我知道这一更改会让代码变得一团糟,因此,我们尝试找到不同的方法…您可以使用参数吗?此API似乎只是跟踪url。至少您可以使用friendly_id gem安全地将具有id的现有产品url替换为名称是的,我们已经使用friendly_id gem,但我们希望在url中显示与产品名称和订单相关的操作。