【问题标题】:rails devise app - supporting user account/profile settingsrails devise 应用程序 - 支持用户帐户/配置文件设置
【发布时间】:2013-02-05 22:35:03
【问题描述】:

我使用 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) 设计/注册#cancel 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) 设计/注册#destroy edit_user GET /users/:id/edit(.:format) users#edit 用户 GET /users/:id(.:format) users#show root / home#index

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

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

提前致谢。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:
    edit_user GET    /users/:id/edit(.:format)      users#edit
    

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

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

    【讨论】:

    • 感谢您的澄清。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 感谢您的澄清,我可以更新设置。当您提到与表单相关的安全性时,您基本上是在建议正确使用 attr_accessible 仅用于可以设置的值?还是你指的是别的东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2010-12-14
    • 2010-11-30
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多