- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Rails 6,再次遇到此错误。
显示.html.erb
<%= link_to "Delete", post_path(@post), class: "dropdown-item", method: :delete %>
Controller 和路由设置没有错误。
应用程序/javascript/packs/application.js
require("@rails/ujs").start();
// require("turbolinks").start();
require("@rails/activestorage").start();
require("channels");
当点击链接时,我可以看到日志:
Started GET "/posts/19" for ::1 at 2019-09-04 23:50:30 +0900
Processing by PostsController#show as HTML
Parameters: {"id"=>"19"}
而不是删除。
这是在 HTML 中呈现的内容:
<a class="dropdown-item" rel="nofollow" data-method="delete" href="/posts/19">Delete</a>
在布局中我包含了 application.js:
<%= javascript_pack_tag 'application' %>
在 HTML 中:
<head>
<meta name="csrf-param" content="authenticity_token">
<meta name="csrf-token" content="+EskpcJWxzYlo5g5lOyRAnx7tgARKbeFqV21YgtRjnlT4/xsmWsRljfqbVmpSDSl2l0s9scz7+C2bezpiLy4fA==">
<link rel="stylesheet" media="all" href="/assets/trix/dist/trix.self-6dd442511a4fc56685fca816ea1b42de7bbc8a0fd0bfd759530fa9e7625d1a6f.css?body=1" data-turbolinks-track="reload">
<link rel="stylesheet" media="all" href="/assets/actiontext.self-a679dceacb4aa0b812495eb34e20291bc8eab82506add17d18f0b3b3d1353123.css?body=1" data-turbolinks-track="reload">
<link rel="stylesheet" media="all" href="/assets/application.self-2115ce8ad5c8bf2c98589b69e9fc7c0d3ba5251b0d5ef251ec5b3da1da9cb7a8.css?body=1" data-turbolinks-track="reload">
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script src="/packs/js/application-dffd55b262c09e354e1b.js"></script>
</head>
实际改为button_to
有效,它在 HTML 上生成:
<form class="button_to" method="post" action="/posts/19">
<input type="hidden" name="_method" value="delete">
<input class="dropdown-item" type="submit" value="Delete">
<input type="hidden" name="authenticity_token" value="ZnfQ05Ah/4LevuR8vXvcYN/CSNAoTDQuwpGHF4WrJDiVV8+wwb4ztsYdsKk9UPZ3k9Gxpfpd/gcobcSBEI6/6A==">
</form>
注意这一行:<input type="hidden" name="_method" value="delete">
我认为问题在于 Rails UJS 尚未加载。我打开控制台并输入 Rails
或 Rails.handleMethod
我得到了
Uncaught ReferenceError: Rails is not defined
at <anonymous>:1:1
(anonymous) @ VM9848:1
最佳答案
我能够解决问题。我会分享给你们。
在我的布局中,我有 =javascript_pack_tag 'application'
已经加载了 Rails UJS。
在我看来部分我还包括另一个 js 脚本 javascript_pack_tag 'posts/show'
。问题出在那个脚本中,我设置为监听点击事件然后 e.preventDefault()
,结果是 Rails UJS 无法创建表单删除,然后发送 GET 请求。
document.addEventListener("DOMContentLoaded",function() {
let postOption = document.getElementsById("post-options");
postOption.addEventListener("click", function(e) {
e.stopPropagation();
this.classList.toggle("is-active");
});
});
});
// Handles "data-method" on links such as:
// <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
handleMethod: function(link) {
var href = rails.href(link),
method = link.data('method'),
target = link.attr('target'),
csrfToken = rails.csrfToken(),
csrfParam = rails.csrfParam(),
form = $('<form method="post" action="' + href + '"></form>'),
metadataInput = '<input name="_method" value="' + method + '" type="hidden" />';
if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {
metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />';
}
if (target) { form.attr('target', target); }
form.hide().append(metadataInput).appendTo('body');
form.submit();
},
关于ruby-on-rails - Rails 6 - 尽管添加了 rails/ujs,但破坏了 GET 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57791063/
我正在学习一个简单的教程,出于某种原因,我的 2 个 View 突变(addCard 和 addList)工作正常......但是,我的第三个突变(editCard)似乎在 Vue 中不起作用。当我单
我正在使用 Twitter Bootstrap 的按钮加载状态和 Rails Unobtrusive JavaScript http://twitter.github.com/bootstrap/ja
所以我正在尝试将谷歌地图集成到我的 Rails 应用程序中(请记住,这是我第一次这样做,而且我是 Rails 初学者,而且我不太了解 Ruby 代码)。 map 代码 // When t
我正在使用 Rails jquery ujs用于在我的应用程序中处理 ajax。此外,我还使用confirm选项来销毁任何记录。作为我当前的设置,我通过单击 data-remote=true 链接连接
我正在使用 Rails UJS。我有一个表单设置来执行远程提交,如下所示: 我正在尝试找到一种从 JavaScript 函数提交此表单的方法。我试过: var form$ = $("#new_sub
我已成功在一个 Rails (3.2.6) 应用程序中添加 ujs。添加 :remote => true 到我的表单标签允许我对我的 js.erb 文件进行 ajax 调用以动态加载 div 等..
我在 Rails 应用程序中使用 jQuery 方法“on”来将事件附加到并不总是存在的表单上。当 #myForm 附加到文档时,它似乎没有附加事件处理程序。 以下是 UJS 对 on() 的建议用法
我的 Rails 本地服务器正在努力寻找 jquery-ujs 文件。我该如何解决这个问题? application.js //= require jquery //= require jquery-
首先,对不起我的英语。我是巴西人,还在进步。 我想创建一个名为“collection_cascading_select”的辅助标记。该助手类似于“collection_select”,但他还有一个名为
我在获取 UJS 调用来更新页面显示时遇到问题。我想在选择框更改时更新 div 的值(我已经用 google 搜索了所有地方,但无济于事)。 我像这样设置更改函数(我使用 Haml): %script
我在 Rails 应用程序中使用 UJS 时遇到问题。我需要动态地将内容添加到表格中。问题是,即使是警报功能也无法启动。这是一段代码:_form_index.html.erb
我正在使用带有原型(prototype) ujs rails.js 脚本的 Rails 3.0。 我有一些 link_to "...", :remote => true在页面加载后添加到页面的链接,因
我正在尝试触发远程链接的 ajax:success 回调。我使用的是 Rails 3.0.8 和 jquery-rails 1.0.11。我运行 jquery 生成器来安装 javascript。 j
我正在使用 Rails UJS 根据我单击的链接将部分加载到容器中。我已经一切正常(请参阅我对问题 here 的回答以获取代码),但我想在加载内容时添加一个微调器。我该怎么做呢?我在 Simone C
Rails 版本:3.2.1 Ruby 版本:1.9.3p125 浏览器:Chrome 18.0.1025.162 开发操作系统:Mac OS/X Lion 服务器操作系统:CentOS 5 我正在尝
我正在使用 JQuery 1.4.4 和 jQuery UJS Rails.js 制作 Ruby On Rails 3.0.3 应用程序 ( https://github.com/rails/jque
sprockets 为 js Assets 做了所有的缩小,但是很多 javascript 是在 respond_to :js UJS 响应中编写的。 在编程时使 javascript 可读也会使浏览
这是一个很奇怪的问题。我有一个 Rails 应用程序,我在其中使用 UJS 将页面上的一个部分替换为另一个部分。最近,它停止工作了,所以我开始记录整个过程,看看它在哪里坏了。这是我发现的: 单击链接后
我有一个使用 data-remote => true 提交的表单。 该表单有一个字段,即文本区域。我想在文本区域长度为 0 时阻止提交表单,并且仅在长度为 GT 1 时允许提交表单。 如何以 Rail
新的和很酷的语法让我可以写: link_to some_path, :remote => true 生成 AJAX 请求。但是如果我需要更长的超时时间(例如 100000 毫秒),我可以在哪里设置呢?
我是一名优秀的程序员,十分优秀!