2011-08-09 75 views
0

例子中,我已經配置了我的路線爲Rail3路線[編輯問題]

match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction' 
resources :cellphones 

一切好,當我把這樣的事情localhost/cellphones/nokia3323/lion但由於具有相同的結構,我不能編輯手機localhost/cellphones/edit/4

回答

1

之前定義的路線優先,因此您可以通過反轉您聲明路線的訂單來重新訪問編輯路線。由於/cellphones/edit/:id的路線比/cellphones/:permalink/:charger更具限制性,因此編輯路線將與第二個部分路線是「編輯」並通過到其他路線,如果它是別的東西。

但是,你最有可能實際上並沒有一個/cellphones/edit/:id路線,因爲什麼被resources :cellphones創建是/cellphones/:id/edit這是更難,因爲無論是從/cellphones/:permalink/:charger區分已經爲第二段路線的通配符部分。

解決問題的最簡單方法是更改​​/cellphones/:permalink/:charger路由,以便更容易區分。您可以使用類似/cellphones/p/:permalink/:charger(「p」用於固定鏈接)或其他任何易於與resources創建的RESTful路由區分的內容。

還有其他一些方法可以處理它,例如使用segment contraintsadding more restful actions

+0

感謝艾米莉,我解決我的問題 – utiq

+0

@utiq確保你接受這個答案是否能解決你的問題。只需點擊問題左側複選框的輪廓即可。 ;) – coreyward

+0

好的。我不知道 – utiq

0

我找到了解決辦法,只是要改變順序

resources :cellphones 
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'