rails设计应用程序 - 支持用户帐户/配置文件设置

时间:2013-02-20 19:16:14

标签: ruby-on-rails devise

我使用devise(2.2.3)开发了基本的rails 3.2 app进行身份验证。现在我需要添加对用户帐户/配置文件设置的支持。最终用户可以更新的(个人资料/帐户)附加属性是用户模型的一部分。

我需要建议如何支持这个? UsersController的哪个动作符合要求?我在UsersController中添加了一个编辑操作。当我运行'rake routes'时,我得到以下

    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)设计/注册#uncod        user_registration POST /users(.:format)设计/注册#create    new_user_registration GET /users/sign_up(.:format)设计/注册#new   edit_user_registration GET /users/edit(.:format)设计/注册#edit                          PUT /users(.:format)设计/注册#update                          删除/users(.:format)设计/注册#dutroy                 edit_user GET /users/:id/edit(.:format)用户#edit                     用户获取/users/:id(.:format)用户#show                     root / home #index

当提交编辑表单时,表单使用PUT向“/ users / 1 / edit”发送消息,我收到路由错误 没有路线匹配[PUT]“/ users / 1 / edit”

这是修改用户设置的正确方法吗?表格是否应以“PUT”发布?如果是这样,如何使用PUT而不是GET进行路由输入?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您希望用户能够更新“他们的”User对象,那么您需要在routes.rb中为他们设置路由条目。类似的东西:

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

您的表单应该是/users/:id而不是/users/:id/edit

设置完成后,您将能够使用表单助手创建表单,供用户编辑User个对象。您需要在此处考虑安全性,并确保它们不会更新他们无法访问的字段。

执行PUT请求的Rails是正确的,因为rails的主要租户之一是尝试使所有RESTful。

答案 1 :(得分:0)

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

这很好,因为转到users /:id / edit只是获取表单。然后填写表单,按“提交”的操作将向/ users /:id发出 PUT 请求。你只是错过了第二部分。

杰里米的答案应该解决路线问题。

相关问题