【问题标题】:Rails & Devise: User accounts not deletingRails & Devise:用户帐户未删除
【发布时间】:2016-01-23 18:18:21
【问题描述】:

我第一次使用 Devise gem 对用户进行身份验证。我可以毫无问题地注册、注销、登录和编辑用户帐户,但删除帐户不起作用!当我点击删除按钮时,弹出JS确认询问我是否要删除,我点击是...然后我被重定向到用户的显示页面。用户帐户完好无损。

views/devise/registrations/edit.html.erb:

<p>Unhappy? <%= button_to "Cancel my account", '/users/#{@user.id}',   data: { confirm: "Are you sure?" }, method: :destroy, class: "btn btn-danger" %></p>

在我的用户控制器中:

  def destroy
    @user = User.find(params[:id])
    @user.destroy

    if @user.destroy
        redirect_to root_path
    end
 end

我仍然对 Rails 路由感到不安,但在我的 routes.rb 中我有:

devise_for :users, :controllers => { registrations: 'registrations' }

还有:

resources :users

当我运行 rake 路由时,我认为可能关联的两条路由是:

DELETE /users(.:format)          registrations#destroy
DELETE /users/:id(.:format)      users#destroy

我很确定我在路线上做错了什么,但我看不出是什么。任何建议表示赞赏!

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:
    #config/routes.rb
    resources :users, only: :destroy
    
    #view
    <%= button_to "Cancel my account", @user, method: :delete, data: { confirm: "Are you sure?" } %>
    

    资源

    你的问题是你没有打电话给delete HTTP verb;相反,您将其称为destroy (method: :destroy)。

    为了提供上下文,HTTP 协议填充了一系列 verbs,以帮助您为特定资源 (url) 定义不同的“操作”。这是维基百科的解释:

    HTTP 定义方法(有时称为动词)来指示要对已识别资源执行的所需操作。这个资源代表什么,无论是预先存在的数据还是动态生成的数据,都取决于服务器的实现。

    因此,当您在routes of your app 中使用resources 助手时,您会看到生成了哪些路由

    如上所示,每次您为特定的resource 声明路由时,Rails 都会自动填充几个预定义的 url/路径。为了让您的应用正确处理您的请求,您必须将其发送到请求的 URL - 而且它必须是有效的。

    【讨论】:

    • 谢谢!这行得通。把我的动词和动作搞混了!
    【解决方案2】:

    改变

    <p>Unhappy? <%= button_to "Cancel my account", '/users/#{@user.id}',   data: { confirm: "Are you sure?" }, method: :destroy, class: "btn btn-danger" %></p>
    

    <p>Unhappy? <%= button_to "Cancel my account", '/users/#{@user.id}',   data: { confirm: "Are you sure?" }, method: :delete, class: "btn btn-danger" %></p>
    

    你应该使用method: :delete 而不是method: :destroy

    【讨论】:

    • 谢谢!我把动词和动作搞混了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2011-04-22
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多