2012-06-11 74 views
0

當你在shell中鍵入耙路線會顯示路線的一個很好的列表:爲什麼不能耙路線提供更多的幫助

 new_edition GET /editions/new(.:format)   editions#new 
    edit_edition GET /editions/:id/edit(.:format)  editions#edit 
     edition GET /editions/:id(.:format)   editions#show 
       PUT /editions/:id(.:format)   editions#update 
       DELETE /editions/:id(.:format)   editions#destroy 

,這是非常有用的,但爲什麼不顯示所需的實際代碼中使用在應用程序以及例如

edition GET /editions/:id(.:format) editions#show edition_path() 

我想這是因爲可能有更多的它然後這一點,但一般的問題是,當我看的例子給了我有擡頭的一個例子路由如何明確編碼以瞭解路線的含義...

+7

因爲追加'_path'或'_url'並不難記住? –

+0

謝謝戴夫。你是對的,隨着更多的理解,我可以更好地看到如何使用它。 – akkdio

回答

5

直接使用xxx_path是不是你唯一的選擇。

的Rails爲您提供了通過polymorpic_path/_url方法建立網址的足智多謀的方法。這些方法是由許多其他助手使用,如:

link_to 'Edit', [:edit, @user]  # instead of edit_user_path(@user) 
redirect_to Product    # instead of products_path 
form_for [@order, @product] do |f| # instead of order_product_path(@order, @product) 
visit url_for [:preview, @invoice] # instead of preview_invoice_path(@invoice) 

所以,通過觀察preview_invoice前綴,你知道該怎麼做,但具體方式是由你。

+0

謝謝jdoe。你的回答幫助我理解了選項,以及他們爲什麼要展示他們在rake routes命令中的作用。真的很感激它。 – akkdio

+0

問題應該是封閉的,但它會失去這個答案:) – Arsen7

+0

@ Arsen7感謝遺憾,您的評論也nonconstructive! :-) – jdoe

0

你有所有需要的信息。第一列告訴你路由助手名稱的前綴(例如new_edition)。您只需添加_path_url即可獲得完整的方法名稱。

然後,你有關於相應的輔助方法,名字沒有跡象顯示部分航線:這是因爲它在同一URL匹配的另一條路線,只有HTTP動詞(GET,POST)的變化。因此,您必須將method: 'delete'添加到您的電話中。

+0

謝謝你ksol - 欣賞答案。 – akkdio