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

时间:2015-04-18 12:50:50

标签: ruby-on-rails ruby routes

我定义了以下路线:

resources :queues do
  resources :jobs
end

但是,网址的构建方式如下:queues/:queue_id/jobs。我希望他们像queues/:queue_name/jobs那样构建。在哪里可以自定义此行为?

3 个答案:

答案 0 :(得分:4)

根据Rails Guides

  

:param选项会覆盖默认资源标识符:id。

即:

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

这就是你需要的吗?

答案 1 :(得分:0)

试试这个,应该做的是:

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

答案 2 :(得分:0)

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

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