【发布时间】:2016-12-27 02:21:41
【问题描述】:
我有一个 Rails 4.2.0 应用程序已经运行了几个月。
应用程序在不同的地方都有link_to标签,使用“删除”作为方法并带有确认提示。这些一直正常工作,在删除之前弹出警报以确认,并且请求按预期路由到控制器中的销毁操作。
今天,一位应用用户问我为什么删除链接不起作用。不显示确认警报,生成的请求是一个简单的 GET,它被路由到 show 操作而不是 destroy。虽然我的用户不经常删除,但我确信他们最初是在工作的。
删除链接不再适用于开发或实际环境。加载包含链接的页面或单击删除链接时,浏览器控制台中没有 javascript 错误。在 Chrome、Firefox 和 Safari 上的行为是相同的。
神秘的部分是我几个月来主要是在做代码和数据库的更改;我不记得上次添加 gem 或运行 bundle install 或 update 是什么时候了。显然,必须改变某些东西才能破坏 javascript,但我想不出它会是什么。
到目前为止,我已经删除了 Rails jQuery 并从 Google API 链接到一个。我已经删除了 Turbolinks。我已将 jquery-rails gem 从 v. 4.0.3 更新到 4.2.1。没有运气。
如果有人可以提出一些测试或查看的建议,这里是我的配置和代码的一些摘录(在恢复上述失败的尝试之后):
Gemfile.lock:
jquery-rails (4.0.3)
jquery-turbolinks (2.1.0)
jquery-ui-rails (5.0.3)
application.js:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require jquery-ui/datepicker
//= require jquery-ui/autocomplete
//= require_tree .
app/views/layouts/application.html.erb,标签内:
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
删除链接标签如下:
<%= link_to 'Delete', item_order_path(@item, order), method: :delete, data: { confirm: 'Are you sure?' }, class: :button %>
在呈现的 HTML 中,它们看起来像这样:
<a data-confirm="Are you sure?" class="button" rel="nofollow" data-method="delete" href="/items/1/orders/1">Delete</a>
对可能发生的事情有任何想法吗?
【问题讨论】:
-
您正在使用哪个操作系统?如果是 Windows,请尝试 gem 'coffee-script-source', '1.8.0'
-
我在 Mac OS X 10.11(开发,使用 WEBrick 服务器)或 CentOS 7(生产,使用 Apache 和Passenger Phusion)上运行该应用程序。
标签: javascript jquery ruby-on-rails destroy confirm