例子中,我已經配置了我的路線爲Rail3路線[編輯問題]
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
resources :cellphones
一切好,當我把這樣的事情localhost/cellphones/nokia3323/lion
但由於具有相同的結構,我不能編輯手機localhost/cellphones/edit/4
例子中,我已經配置了我的路線爲Rail3路線[編輯問題]
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
resources :cellphones
一切好,當我把這樣的事情localhost/cellphones/nokia3323/lion
但由於具有相同的結構,我不能編輯手機localhost/cellphones/edit/4
之前定義的路線優先,因此您可以通過反轉您聲明路線的訂單來重新訪問編輯路線。由於/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 contraints或adding more restful actions。
我找到了解決辦法,只是要改變順序
resources :cellphones
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
感謝艾米莉,我解決我的問題 – utiq
@utiq確保你接受這個答案是否能解決你的問題。只需點擊問題左側複選框的輪廓即可。 ;) – coreyward
好的。我不知道 – utiq