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

时间:2010-02-16 08:15:50

标签: ruby-on-rails

什么时候应该使用命名路由而不是使用url_for和{:controller => “somecontroller”,:action =>哈希?“someaction”}哈希?

是一个优先于另一个,为什么? w.r.t.是一个更可维护或更有效的性能

4 个答案:

答案 0 :(得分:3)

了解命名路由正在做什么可能会有所帮助。

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

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

但是,不要打折url_for。由于它处理缺少选项的方式,它有许多创造性的用途。在保持从多个嵌套源使用的DRY视图时非常有用。即:当你有一个blog_posts控制器和posts_controller共享相同的视图。

我强烈建议您阅读url_for documentation。为了帮助找出那些使用url_for的地方的意义。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

命名路线非常整洁。

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

然后你可以打电话

company_url :id => 1

答案 3 :(得分:0)

如果仔细设置路由和资源,则不需要任何哈希路由,只需要命名路由(通过map.resource或自定义map.<something>内置)。如果您必须根据动态内容创建链接,则哈希路由很有用。类似的东西:

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

(这只是一个强制性的例子,但你应该得到它的要点:)