2013-02-20 93 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