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

Javascript 删除按钮在Rails 5.1中执行显示操作而不是删除操作,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我已经尝试了一些解决方法,但我无法使它正常工作。 我正在关注乔丹·哈金斯的Rails教程。 我通过scafold生成了“blog”结构,最初一切正常。现在我不知道发生了什么事。 我使用的是Rails 5.1 每次我点击“删除博客”按钮,它都会使用一个GET操作,而不是delete操作 当查看服务器控制台时,我看到它执行的是显示操作,而不是删除操作 另外,我检查了我的代码,没有发现任何错误。实际上,我不知道在哪里可以放置调试工具来发现问题 _blog.html.erb <%= link_t

我已经尝试了一些解决方法,但我无法使它正常工作。 我正在关注乔丹·哈金斯的Rails教程。 我通过scafold生成了“blog”结构,最初一切正常。现在我不知道发生了什么事。 我使用的是Rails 5.1

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

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

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

_blog.html.erb

<%= link_to 'Deletar Post', blog, method: :delete, data: { confirm: 'Deseja confirmar a exclusão do post?' } %>
此外,我认为路由配置正确

myapplication.js文件

//= require rails-ujs
//= require turbolinks
//= require_tree .
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require jquery_ujs
此外,我还将jquery rails作为一个宝石

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'
这很奇怪,因为“删除”按钮工作正常,所以我不久前就停止了测试。现在我找不到是什么让它停止了

我还尝试在控制台上运行销毁操作。它成功了

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

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

谢谢


Bruno

我相信您链接到的路径参数有错误:

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


第二个param“blog”在我看来很奇怪。我猜应该是
blog\u路径
blog\u url
。你能试试吗?

这是你的代码的一部分吗?要通过一个博客删除你必须给他一个<代码>

范例

<% @pops.each do |pop| %>
    #fields of pop, in your case is blog
    <%= link_to 'Destroy', pop, method: :delete, data: { confirm: 'Are you sure?' } %>
    #in the scaffold, the fields are generated inside a table, but it is not 
    #the line that passes a blog information that you want to delete, is
    #each. understood?
<% end %>

#流行音乐的领域,在你的例子中是博客
#在scaffold中,字段是在表中生成的,但不是
#传递要删除的博客信息的行是
#每个。理解?

我猜您的代码在一个.each循环中,这就是为什么使用“blog”,而在这里您需要删除操作的路径,并添加您想要销毁的项目的id。因为你没有提供太多的信息,所以在这里只是猜测

如果您的路线如下所示:

resources :blogs, only: [:destroy]
<%= link_to 'Deletar Post', blog_path(blog), method: :delete, data: { confirm: 'Deseja confirmar a exclusão do post?' } %>
然后,您的路径是prob,blog_path,如果您查看您的路由(我通常会转到localhost:3000/routes查看您可以找到的所有路由以及它所需的内容)

所以我认为应该是这样的:

resources :blogs, only: [:destroy]
<%= link_to 'Deletar Post', blog_path(blog), method: :delete, data: { confirm: 'Deseja confirmar a exclusão do post?' } %>


如果它应该删除一个博客,那么按钮上的名字不是有误吗我刚刚花了一整天的时间在一个类似的问题上,并且已经解决了它。虽然这个问题已经很老了,但我想我会在这里为任何一个正在与之斗争的人记录下来,因为我想它会再次出现

在我的例子中:delete方法被忽略的原因是UJS没有被发送到浏览器。在昨天将两个应用程序(一个从4.2升级到5.1)升级到Rails 5.2的过程中,我最终发现UJS不见了。我承认我进行了大量的捆绑升级捆绑安装,并对一些我不想使用的宝石犹豫不决。也许这给我带来了问题

这只发生在我的管理部分,在那里我有JS和CSS的自定义清单(分别是admin.JS和admin.CSS),它们在布局中被正确引用,并且正确地表示为:

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

<%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>
//= require jquery
//= require rails-ujs
//= require_tree .
奇怪的是,正确提供的CSS清单没有问题

另一方面,我的JS资产清单(Rails 5.1:)中的更改

(请注意,下划线现在是连字符)可能有点像是在转移视线,因为我摆弄这些引用都没有用


问题最终是由与myadmin.js位于同一文件夹中的空admin.coffee文件引起的。资产管道必须首选使用该文件,而不是同名的.js文件。我不需要咖啡脚本。一旦我发现并删除了它,我就重新开始工作了。

尝试下面的语法,希望这能有所帮助

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


你的链接中不需要
remote:true
吗?你能显示你的rake路径吗?嗯。我今天也有这个问题(Rails 5.2),但昨天没有(Rails 5.1.6)。我在5.2发行说明中没有看到任何相关内容,因此我仍在寻找答案。
<%= link_to 'Deletar Post', blog_path(blog), method: :delete, data: { confirm: 'Deseja confirmar a exclusão do post?' } %>