什么时候应该使用命名路由而不是使用url_for和{:controller => “somecontroller”,:action =>哈希?“someaction”}哈希?
是一个优先于另一个,为什么? w.r.t.是一个更可维护或更有效的性能
答案 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
(这只是一个强制性的例子,但你应该得到它的要点:)