什么时候应该使用命名路由,而不是使用{:controller => "somecontroller", :action => "someaction"}哈希表的url_for呢?有没有一种方法更好,为什么?从维护性或性能方面来看,哪一种更可靠或更有效率?
了解命名路由的作用可能会有所帮助。
定义命名路由创建一个包装器,围绕url_for提供所需的选项以创建路由。路由资源创建许多命名路由。
考虑到这一点,调用命名路由与使用所需选项的url_for之间的开销可以忽略不计。因此,如果要链接到特定资源,则应使用命名路由。它们更易于阅读、输入和维护。
然而,不要低估url_for。由于它处理丢失选项的方式,它具有许多创造性用途。在多个嵌套来源使用的视图中保持DRY非常有用。即:当您有一个blog_posts控制器和posts_controller共享相同的视图时。
我强烈鼓励您阅读url_for文档。以帮助确定何时使用url_for。
map.resource
或自定义的map.<something>
实现)。如果您必须基于动态内容创建链接,则哈希路由非常有用。例如:link_to @post.title, :controller => (@user.is_admin ? 'admin/posts' : 'public/posts'), :action => 'show', :id => @post
(这只是一个强制性的例子,但你应该能理解其中的要点:)
命名路由非常整洁。
map.with_options :controller => "company", :action => "show", :panel => "name" do |m|
m.company '/company/:action/:id/:panel'
end
然后你可以调用
company_url :id => 1
我更喜欢使用命名路由,因为它更简短且具有相同的功能。