【问题标题】:How to issue a delete request in ruby on rails如何在 ruby​​ on rails 中发出删除请求
【发布时间】:2018-10-17 16:38:45
【问题描述】:

在我的 rails 应用程序中,我有以下链接:

<%= link_to("Log out", logout_path, method: :delete)%>

在我的路线中我添加了:

  delete '/logout',  to: 'sessions#destroy'

但是,当我单击注销链接时,我收到以下路由错误:

No route matches [GET] "/logout"

似乎即使我指定了“method::delete”,“link_to”函数仍然发出获取请求而不是删除请求。 如何使用 ruby​​ on rails 发送删除请求?

我的 application.js 看起来像这样:

//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
//= require jquery
//= require jquery_ujs
//= require bootstrap

【问题讨论】:

  • 您可以在问题中发布application.js 吗?

标签: ruby-on-rails routing


【解决方案1】:

这通常是由于application.js 中缺少 JS 依赖项。

如果您使用的是 Rails 5,请添加:

//= require rails-ujs

对于早期版本,请确保您拥有:

//= require jquery
//= require jquery_ujs 

在那里。

原因是 Rails 的一点点魔法“伪造”了删除请求,因为大多数浏览器不支持这一点。它将data-method="delete" 添加到您的HTML 标记中,允许您的应用程序识别请求,并作为DELETE 处理(即使它实际上 是作为GET 请求发送的)。

另外,请确保您通过布局中的以下行加载上述 Javascript:

<%= javascript_include_tag "application" %>

如果您有任何问题,请告诉我 - 希望这会有所帮助。

【讨论】:

  • 我在 application.js 中有所有要求。我生成的 HTML 的行是:"Log out"。问题依然存在
  • 啊,不好意思。加载页面时,您是否在 JS 控制台中看到任何错误?
  • 我终于找到了这个错误。我没有正确包含 js 文件,并且我在 Gemfile 中有 bootstrap 和 bootstrap-sass,它们导致了一些奇怪的错误。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多