1

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

这是我的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_destinationstrip#show,即重定向到/trips/:id,我有一些解决方案,例如硬编码routes.rb或添加重定向destination#index。哪一个更好?是否有完成此任务的最佳实践?

4

1 回答 1

1
resources :trips do
  resources :destinations do
    member do
      get 'index' => 'trips#show'
    end
  end
end

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

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

很容易被花哨的路线和 URL 表示迷住。确保您的路线有意义。它将为您节省未来的麻烦。

于 2013-05-17T07:43:11.020 回答