Rails路由帮助map.connect

时间:2009-08-28 10:43:16

标签: ruby-on-rails routes

在我当前的rails应用程序中,我定义了一堆命名路由来处理静态内容,如下所示:

map.with_options :controller => 'static_content' do |static|
  static.imprint    'imprint',    :action => 'imprint'
  static.menu1      'menu1',      :action => 'menu1'
  static.menu1_sub1 'menu1/sub1', :action => 'menu1_sub1'
  static.menu1_sub2 'menu1/sub2', :action => 'menu1_sub2'
  static.menu2      'menu2',      :action => 'menu2'
  ...
end

现在我想重构一下这个令人作呕的路由,以便有类似的东西:

map.connect 'menu1/:action', :controller => 'static/menu1'
map.connect 'menu2/:action', :controller => 'static/menu2'
...

我创建了控制器命名空间static并映射了命名空间中所有这些控制器的操作。但是现在 - 当然 - 所有那些有用的路线助手如 menu1_sub2_path 都停止工作,我将不得不改变它们。

UFF!重复使用路径助手的所有用法:控制器 - :动作式?

所以我的问题是,如果有人看到一个很好的方式来围绕这个。有没有办法定义这些路径助手 - 或者它们的创建方式?甚至更聪明的方法来做那些令人讨厌的映射?

感谢您的帮助,

1 个答案:

答案 0 :(得分:2)

map.with_options :controller => 'static_content' do |static|
  static.page ':action'
end

然后调用它:

page_path(:imprint)