在 Rails 嵌套路由中使用实体名称而不是 ID

Use entity name instead of ID in Rails nested routes

我定义了以下路由:

resources :queues do
  resources :jobs
end

但是,URL 将构建为:queues/:queue_id/jobs。我希望他们像 queues/:queue_name/jobs 一样建造。自定义此行为的位置在哪里?

试试这个,应该做要求:

namespace :queues, :path => "queues/:name" do    
  resources :jobs
end

根据Rails Guides

The :param option overrides the default resource identifier :id.

即:

 resources :queues, param: :name do
   resources :jobs
 end

这是你需要的吗?

您可以将队列模型上的 to_param 覆盖为 return queue_name。请注意,这可能会破坏您当前的控制器模型发现。

http://blog.teamtreehouse.com/creating-vanity-urls-in-rails