2013-02-20 164 views
0

我開發了一個基本的rails 3.2應用程序,使用devise(2.2.3)進行身份驗證。現在我需要添加對用戶帳戶/配置文件設置的支持。最終用戶可以更新的其他屬性(配置文件/帳戶)是用戶模型的一部分。rails設計應用程序 - 支持用戶帳戶/配置文件設置

我需要關於如何支持的建議? UsersController的哪個動作可以滿足要求?我在UsersController中添加了一個相同的編輯操作。當我運行 '耙路線',我得到以下

new_user_session GET /users/sign_in(.:format)  devise/sessions#new 
     user_session POST /users/sign_in(.:format)  devise/sessions#create 
destroy_user_session DELETE /users/sign_out(.:format)  devise/sessions#destroy 
     user_password POST /users/password(.:format)  devise/passwords#create 
    new_user_password GET /users/password/new(.:format) devise/passwords#new 
    edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 
        PUT /users/password(.:format)  devise/passwords#update 

cancel_user_registration GET /users/cancel(.:format)設計/註冊#取消 user_registration POST /users(.:format)設計/註冊#創建 new_user_registration GET /users/sign_up(.:format)設計/註冊#新 edit_user_registration GET /users/edit(.:format)設計/註冊#編輯 PUT /users(.:format)設計/註冊#更新 DELETE /users(.:format)devise/registrations#destroy edit_user GET /users/:id/edit(.:format)users#edit user GET /users/:id(.:format)users#show root/home#index

當提交編輯表單時,表單會發送一條消息給「/ users/1/edit」,並帶有PUT我得到的路由錯誤 沒有路由匹配[PUT]「/ users/1/edit」

這是修改用戶設置的正確方法嗎?該表格是否應該以「PUT」發佈?如果是這樣,我如何使用PUT代替GET來創建路由條目?

在此先感謝。

回答

0

如果你希望用戶能夠更新「自己的」 User對象,那麼你需要設置你的routes.rb爲他們的路由表項。喜歡的東西:

resource :users => [:edit, :update] 

你的形式應該是PUTing到/users/:id/users/:id/edit

設置完成後,您將能夠使用窗體幫助器爲用戶創建表單,以便編輯User對象。你會想在這裏考慮安全性,並確保他們不更新他們不應該訪問的字段。

做一個PUT請求的Rails是正確的,因爲Rails的主要租戶之一是嘗試使所有RESTful。

+0

感謝您的澄清,我可以更新設置。當你提到與表單相關的安全性時,你基本上建議只爲可設置的值使用attr_accessible。或者你是指別的東西? – sthustfo 2013-02-21 09:04:23

0
edit_user GET /users/:id/edit(.:format)  users#edit 

這是很好的,因爲要用戶/:ID /編輯簡直是越來越形式。然後填寫表格,按下「提交」的動作將向/ users /:id發出PUT請求。你只是錯過了第二部分。

傑里米的答案應該解決路線問題。

+0

感謝您的澄清。 – sthustfo 2013-02-21 09:06:51

相關問題