【问题标题】:uninitialized constant UsersController using devise in Production while signing out注销时在生产中使用设计的未初始化常量 UsersController
【发布时间】:2018-12-22 06:33:52
【问题描述】:

我无法使用 Devise 在生产环境中注销。在开发中,一切正常。我认为删除在 Devise 的生产中不起作用。我知道将 devise.rb 中的 config.sign_out_via = :delete 更改为 :get 的解决方法,但我不想这样做,因为我读到这会引入漏洞。此外,当我尝试在开发中对 users/30/clients/23 执行删除操作时,它工作正常,但在生产中我收到一个错误,提示

无法为 ClientsController 找到“显示”操作

所以,我认为这与删除方法有关,仅作为注册,登录在生产中也可以正常工作。

我该如何进行?

【问题讨论】:

  • 将 link_to 更改为 button_to 有效,但我不明白为什么 link_to 无效。

标签: ruby-on-rails devise


【解决方案1】:

link_to 将生成一个 GET 请求,button_to 将生成一个 POST 请求 - 两者都需要不同的路由并执行不同的操作。您的链接转到:

  • 显示带有 GET 请求的操作(提供 id)
  • 使用 POST 请求创建操作
  • 使用 POST 请求销毁操作,并将隐藏的 _method 参数值设置为 DELETE - 这是因为现代浏览器不支持删除方法(HTML5 也不支持 - 更多信息 here

您可以强制link_to 使用 POST 方法:

<%= link_to "Your link", your_path, method: :post %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多