gpt4 book ai didi

javascript - 删除按钮在 Rails 5.1 中执行显示操作而不是删除操作

转载 作者:太空宇宙 更新时间:2023-11-03 16:41:47 24 4
gpt4 key购买 nike

我已经尝试了一些解决方案,但我无法使其正常工作。我正在关注 Rails 上的 Jordan Hudgens 教程。我通过脚手架生成了“博客”结构,最初一切正常。现在我不知道发生了什么事。我正在使用 Rails 5.1。

每次我点击“删除博客”按钮时,它都会使用 GET 操作而不是 DELETE 操作。

当查看服务器控制台时,我看到它正在执行显示操作,而不是删除操作。

Server console log

另外,我检查了我的代码,没有发现任何错误。实际上,我不知道在哪里可以放置调试工具来找出问题所在。

_blog.html.erb

<%= link_to 'Deletar Post', blog, method: :delete, data: { confirm: 'Deseja confirmar a exclusão do post?' } %>

博客 Controller .rb

  def destroy
@blog.destroy
respond_to do |format|
format.html { redirect_to blogs_url, notice: 'Seu post foi excluído com sucesso.' }
format.json { head :no_content }
end
end

此外,我认为路由配置正确。

Blog routes

我的 application.js 文件

//= require rails-ujs
//= require turbolinks
//= require_tree .
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require jquery_ujs

另外,我有 jquery-rails 作为 gem

gem 'devise', '~> 4.3'
gem 'bootstrap', '~> 4.0.0.beta2.1'
gem 'jquery-rails'
gem 'brunocruz_view_tool', '~> 0.1.0'
gem 'petergate', '~> 1.8'

很奇怪,因为“删除”按钮可以正常使用,所以我前段时间停止测试了。现在我找不到是什么让它停止了。

我还尝试在控制台运行销毁操作。它奏效了。

Destroy action using rails console

我运行了 JavaScript 控制台来查找错误。但我找不到任何。 (我真的看对地方了吗?)

In this test, I tried to run 2x this: click on "delete" button and then come back to blog index

我完全迷失在这里。我不知道我还能做些什么来找到错误。你能帮帮我吗?

谢谢,

布鲁诺

最佳答案

我刚刚花了一整天的时间解决类似的问题并解决了它。虽然这个问题很老,但我想我会在这里为任何正在为此苦苦挣扎的人记录下来,因为我想它会再次出现。

(在我的例子中)忽略 :delete 方法的原因是 UJS 没有被发送到浏览器。在昨天将两个应用程序(一个从 4.2 和一个从 5.1)升级到 Rails 5.2 的过程中,我最终发现 UJS 丢失了。我承认我运行了无数次捆绑升级捆绑安装 并且犹豫了一些我并不热衷于使用的 gem。也许这给我带来了问题。

它只发生在我的管理部分,我有 JS 和 CSS(分别是 admin.js 和 admin.css)的自定义 list ,它们在布局中被正确引用并且正确地是 precompiled as described in the official guide :

app/views/layouts/admin.html.erb中:

<%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>

app/assets/javascripts/admin.js 中:

//= require jquery
//= require rails-ujs
//= require_tree .

奇怪的是,正确提供的 CSS list 没有问题。

附带说明一下,我的 JS Assets list (Rails 5.1:https://guides.rubyonrails.org/asset_pipeline.html)从

//= require jquery_ujs

//= require rails-ujs

(注意下划线现在是连字符)可能有点转移注意力,因为我摆弄了这些引用但无济于事。

问题最终是由与我的 admin.js 相同的文件夹中的空 admin.coffee 文件引起的。 Assets 管道必须优先使用它而不是同名的 .js 文件。我不需要 CoffeeScript。一旦我发现并删除了它,我就恢复了业务。

关于javascript - 删除按钮在 Rails 5.1 中执行显示操作而不是删除操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com