Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 匹配第二级(嵌套)资源索引操作的最佳实践_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 匹配第二级(嵌套)资源索引操作的最佳实践

Ruby on rails 匹配第二级(嵌套)资源索引操作的最佳实践,ruby-on-rails,ruby,Ruby On Rails,Ruby,(我正在做codeschool的在线课程练习,rails应用程序从头开始第1部分) 这是我的路线。rb resources :destinations, only: :index resources :trips do resources :destinations end 并且,rake routes结果使这两条路由执行相同的操作: Prefix Verb URI Pattern Controller#

(我正在做codeschool的在线课程练习,rails应用程序从头开始第1部分)

这是我的
路线。rb

resources :destinations, only: :index 

resources :trips do
  resources :destinations
end
并且,
rake routes
结果使这两条路由执行相同的操作:

           Prefix Verb   URI Pattern                             Controller#Action
     destinations GET    /destinations(.:format)                 destinations#index
trip_destinations GET    /trips/:trip_id/destinations(.:format)  destinations#index
我希望将
trip\u destinations
trip\35; show
匹配,即重定向到
/trips/:id
,我有一些解决方案,比如在
routes.rb
中硬编码,或者在
destination\35; index
中添加重定向。哪一个更好?是否有完成此任务的最佳实践

resources :trips do
  resources :destinations do
    member do
      get 'index' => 'trips#show'
    end
  end
end
这对您来说是可行的,但它基于错误的设计,因为响应与请求不匹配。换句话说,这是一条糟糕的路线。trip的目的地索引资源应该使用trip的目的地索引而不是trip对象本身进行响应

/trips/:id/destinations
路径不应重定向或呈现
/trips/:id
。首先不应该有指向
trips/:id/destinations
的链接,除非您的应用程序可以使用适当的资源进行响应

很容易被花哨的路线和URL呈现所迷惑。确保你的路线有意义。这将在将来为你省去很多麻烦

这对您来说是可行的,但它基于错误的设计,因为响应与请求不匹配。换句话说,这是一条糟糕的路线。trip的目的地索引资源应该使用trip的目的地索引而不是trip对象本身进行响应

/trips/:id/destinations
路径不应重定向或呈现
/trips/:id
。首先不应该有指向
trips/:id/destinations
的链接,除非您的应用程序可以使用适当的资源进行响应


很容易被花哨的路线和URL呈现所迷惑。确保你的路线有意义。这将在将来为您节省大量的麻烦。

谢谢@gg\s。你说得对,我应该明确禁用该路由。谢谢@gg\s。你是对的,我应该明确禁用该路由。