Mic*_*ant 1 javascript ruby ajax routes ruby-on-rails
如何调用铁路路线并从js传入ID。
我正在切换到通过我的应用程序使用 rails 路由,包括在 js 中
我有一个电话:
# app/assets/javascript/verifying_link.js
$.ajax({
url: "/verify_link/"+id+"&table_row="+row,
Run Code Online (Sandbox Code Playgroud)
但我想用
# app/assets/javascript/verifying_link.js.erb
Run Code Online (Sandbox Code Playgroud)
但是如何从 js 传递 id 呢?
我试过:
url: "<%= Rails.application.routes.url_helpers.verify_link_path(id) %>" + "&table_row="+row,
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:-
undefined local variable or method `id' for#<#<Class:0x00000001ca3220>:0x007f6228c792f0>
(in /...linker/app/assets/javascript/verifying_link.js.erb)
Run Code Online (Sandbox Code Playgroud)
- 将其插入链接
- 将其作为数据传递
——
路线
正如您已经尝试过的,您可以在路线本身中传递它:
# app/assets/javascript/verifying_link.js
$(document).on("click", ".element", function(){
$.ajax({
url: "/verify_link/"+id+"&table_row="+row
});
});
Run Code Online (Sandbox Code Playgroud)
这样做的方法是id从您的 HTML 中包含。
ajax毫无疑问,你会被一个事件触发。该事件将对应于一个 HTML 元素,该元素现在可以具有data, 或id属性(感谢HTML5):
#app/views/controller/view.html.erb
<%= link_to "Your Link", path_to_link, id: @item.id %>
#app/assets/javascript/verifying_link.js
$(document).on("click", ".element", function(){
var id = $(this).attr("id");
$.ajax({
url: "/verify_link/"+id,
});
});
Run Code Online (Sandbox Code Playgroud)
您需要确保将数据从HTML传递给 JS才能完成这项工作
数据
或者(这仅适用于collection路线),您可以id在数据标签中发送。当然,这不会帮助你将你的包含id在你的 JS 中,但它仍然非常重要:
#app/assets/javascript/verifying_link.js
$(document).on("click", ".element", function(){
var id = $(this).attr("id");
$.ajax({
url: "/verify_link",
data: { id: id }
});
});
Run Code Online (Sandbox Code Playgroud)
这里的区别在于,如果您想包含其他数据,您可以将其包含在data属性中。此外,您需要确保您的路由对应于您希望作为数据发送的内容(IEmember路由需要将id附加到 URL)