路由检查

时间:2009-05-31 03:48:38

标签: ruby-on-rails

有没有办法让路径得到子路径?

我的意思是给出以下路线:

map.resources :users do |user|
  user.resources :articles
  ...
end

如果我给出path =“users / 1”,有没有办法获得路线 users / 1 / edit,users / 1 / articles,users / 1 / articles / new?

提前致谢。 -Satynos

3 个答案:

答案 0 :(得分:2)

这样做有一个rake任务,

rake routes | grep "users"

从nix机器出来做

如果你想在Rails应用程序中做一些聪明的事情,可能值得检查rails / railties下的源代码

答案 1 :(得分:0)

我不确定你在问什么,但这些是我认为用于路由的资源:

Rails Routing from the Outside In

Ruby on Rails routing demystified

答案 2 :(得分:0)

是的,路线定义非常容易接近。以下代码应该为您提供特定控制器的路由列表:

rts = ActionController::Routing::Routes.routes.reject do |rt|
  rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end

您可以在控制台中运行以下代码以查看路径:

rts = ActionController::Routing::Routes.routes.reject do |rt|
  rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end; nil
rts.each do |rt|
  puts "Route: #{rt.segments}"
end; nil

这些段实际上也被分解为一个数组,这意味着应该很容易将列表进一步过滤到只需要用户ID的路​​由。