2010-02-16 38 views
4

何時應該使用命名路由與使用url_for與{:controller =>「somecontroller」,:action =>「someaction」} hash?使用命名路線與使用url_for()

是比其他人更喜歡的,爲什麼? w.r.t更可維持或更有效率性能?

回答

3

這可能有助於理解什麼叫路線都在做。

定義一個命名路由會創建一個包裝url_for提供創建的路由所需的選項。路由資源會創建許多命名路由。

考慮到這一點,調用命名路由而不是url_for所需選項的開銷可以忽略不計。所以如果你鏈接到一個特定的資源,命名路線是要走的路。他們更容易閱讀,輸入和維護。

但是,不要打折url_for。由於它處理丟失選項的方式,它有許多創造性的用途。當涉及保留從多個嵌套源使用的視圖DRY時,它非常有用。即:當你有一個blog_posts控制器和posts_controller共享相同的意見。

我強烈建議您閱讀url_for documentation。爲了弄清楚這些地方在哪裏使用url_for是有意義的。

0

我更喜歡命名的路線,因爲它更短,並做同樣的事情。

0

命名路線非常整齊。

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

然後就可以調用

company_url :id => 1 
0

如果您仔細設置了路由和資源,則不應該需要任何哈希路由,只有命名路徑和哈希路由(通過map.resource或自定義map.<something>內置)。如果您必須根據動態內容創建鏈接,哈希路由很有用。喜歡的東西:

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

(這只是一個強制的例子,但你應該得到的要點吧:)