使用命名路由vs使用url_for()

4
什么时候应该使用命名路由,而不是使用{:controller => "somecontroller", :action => "someaction"}哈希表的url_for呢?有没有一种方法更好,为什么?从维护性或性能方面来看,哪一种更可靠或更有效率?
4个回答

3

了解命名路由的作用可能会有所帮助。

定义命名路由创建一个包装器,围绕url_for提供所需的选项以创建路由。路由资源创建许多命名路由。

考虑到这一点,调用命名路由与使用所需选项的url_for之间的开销可以忽略不计。因此,如果要链接到特定资源,则应使用命名路由。它们更易于阅读、输入和维护。

然而,不要低估url_for。由于它处理丢失选项的方式,它具有许多创造性用途。在多个嵌套来源使用的视图中保持DRY非常有用。即:当您有一个blog_posts控制器和posts_controller共享相同的视图时。

我强烈鼓励您阅读url_for文档。以帮助确定何时使用url_for。


0
如果您仔细设置路由和资源,就不需要任何哈希路由,只需要命名路由(可以通过内置的map.resource或自定义的map.<something>实现)。如果您必须基于动态内容创建链接,则哈希路由非常有用。例如:
link_to @post.title, :controller => (@user.is_admin ? 'admin/posts' : 'public/posts'), :action => 'show', :id => @post

(这只是一个强制性的例子,但你应该能理解其中的要点:)


0

命名路由非常整洁。

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

然后你可以调用

company_url :id => 1

0

我更喜欢使用命名路由,因为它更简短且具有相同的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接