(我正在从codeschool进行在线课程练习,从第1部分开始使用rails app)
这是我的routes.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_destinations
与trip#show
匹配,即重定向到/trips/:id
,我有一些解决方案,例如routes.rb
中的硬编码或{{1}中的重定向}}。哪一个更好?有没有最佳实践来完成这项任务?
答案 0 :(得分:1)
resources :trips do
resources :destinations do
member do
get 'index' => 'trips#show'
end
end
end
这对您有用,但它基于错误的设计,因为响应与请求不匹配。换句话说,这是一条糟糕的路线。旅行的目的地索引资源应该使用旅行的目的地索引,而不是旅行对象本身。
/trips/:id/destinations
路径不应重定向或呈现/trips/:id
。除非您的应用程序可以使用适当的资源进行响应,否则不应该首先指向trips/:id/destinations
的链接。
很容易被花哨的路线和网址呈现带走。确保你的路线有意义。它将在未来为您节省大量麻烦。