0

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

我需要关于如何支持这一点的建议?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) devise/registrations#cancel user_registration POST /users(.:format) devise/registrations#create new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users /edit(.:format) devise/registrations#edit PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy edit_user GET /users/:id/edit(.:格式)用户#编辑用户 GET /users/:id(.:format) users#show root / home#index

提交编辑表单后,表单会使用 PUT 向“/users/1/edit”发送一条消息,我收到 No route matches [PUT]“/users/1/edit”的路由错误

这是修改用户设置的正确方法吗?表格应该贴上“PUT”吗?如果是这样,我如何使用 PUT 而不是 GET 进行路由条目?

提前致谢。

4

2 回答 2

0

如果您希望用户能够更新“他们的”User对象,那么您需要在routes.rb. 就像是:

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

你的表格应该是 PUTing to /users/:idnot /users/:id/edit

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

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

于 2013-02-20T19:51:41.800 回答
0
edit_user GET    /users/:id/edit(.:format)      users#edit

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

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

于 2013-02-20T19:54:38.940 回答