代码之家  ›  专栏  ›  技术社区  ›  Joe Holloway

使用命名路由与使用url\u for()

  •  4
  • Joe Holloway  · 技术社区  · 16 年前

    什么时候应该使用命名路由,而不是使用url\u作为{:controller=>”somecontroller“,:action=>”someaction“}散列?

    一个比另一个更受欢迎吗?为什么?一个更易维护还是更有效的水下机器人性能?

    4 回复  |  直到 16 年前
        1
  •  3
  •   EmFi    16 年前

    这可能有助于理解命名路由正在做什么。

    考虑到这一点,使用所需的选项调用命名路由(相对于url)的开销可以忽略不计。因此,如果要链接到特定的资源,命名路由是一种方法。它们更容易阅读、打字和维护。

    但是,不要为你的url打折。由于它处理遗漏选项的方式,它有许多创造性的用途。当涉及到保持从多个嵌套源使用的视图干燥时,它非常有用。Ie:当你有一个blog\u posts controller和posts\u controller共享相同的视图时。

    我强烈建议你读这本书 url_for documentation . 为了帮助找出这些地方的位置,使用url\u是有意义的。

        2
  •  0
  •   Tomas Markauskas    16 年前

    我更喜欢命名的路线,因为它比较短,做同样的事情。

        3
  •  0
  •   allenwei    16 年前

    命名的路线非常整洁。

     map.with_options :controller => "company", :action => "show", :panel => "name" do |m|
       m.company '/company/:action/:id/:panel'
     end
    

    company_url :id => 1
    
        4
  •  0
  •   galileoMonkey    16 年前

    如果您仔细设置了路由和资源,就不需要任何散列路由,只需要命名的路由(或者是内置的via) map.resource 还是习惯 map.<something> ). 如果必须基于动态内容创建链接,哈希路由非常有用。比如:

    link_to @post.title, :controller => (@user.is_admin ? 'admin/posts' : 'public/posts'), :action => 'show', :id => @post