在一個Rails應用中,我有一個特殊的URL(/ profile)映射到用戶控制器,允許用戶查看和編輯他們的配置文件。我向路由文件中添加了以下條目,以便配置文件的「get」將路由到用戶控制器中的配置文件操作,配置文件的「post」將路由到用戶控制器中的update_profile操作。Rails路由問題
match '/profile', :to => 'users#profile', :via => "get"
match '/profile', :to => 'users#update_profile', :via => "post"
如果我跑耙路線我看到下面的兩個條目
profile GET /profile(.:format) {:controller=>"users", ":action=>"profile"}
profile POST /profile(.:format) {:controller=>"users", ":action=>"update_profile"}
如果我嘗試打dev的URL http://localhost:3000/profile它如預期帶來了個人資料頁面。如果我按表單按鈕它給了我下面的錯誤:
Routing Error
No route matches "/profile"
望着初始頁我看到下面的表單標籤上生成的HTML,所以它看起來動作的設置是否正確。
<form accept-charset="UTF-8" action="/profile" class="edit_user" enctype="multipart/form-data" id="edit_user_1" method="post">
那麼我錯過了什麼?通過查看耙路輸出,我認爲這將工作。我是否錯誤地考慮了我的http動詞?任何幫助,將不勝感激。
/profile的概念僅適用於當前用戶,如果您未登錄系統,則不會訪問該頁面,因此在此情況下不需要:id。我們正在使用用戶控制器生成的url來管理管理功能,這與我們希望用戶擁有自己的配置文件的用戶體驗不同。因此,系統管理員使用編輯操作來編輯現有用戶,其中配置文件操作將提供爲當前登錄的用戶定製的不同體驗。是的,這就是它在控制檯中的顯示方式。 – 2010-11-03 21:33:04
這使得更多的意義。在那種情況下,唯一讓我感到有趣的是實際的路線。在之前不應該有一個報價:行動,你不同意嗎?我唯一能想到的嘗試就是始終使用雙引號。在你的路線中,你有一些字符串單引號和其他人的雙引號。它不應該有所作爲,但它是值得一試。 – Samo 2010-11-04 15:29:16