如何调用铁路路线并从 js 传入 ID。
我正在通过我的应用程序(包括在 js 中)切换到使用 Rails 路由
我有一个电话:
# app/assets/javascript/verifying_link.js
$.ajax({
url: "/verify_link/"+id+"&table_row="+row,
但我想用
# app/assets/javascript/verifying_link.js.erb
但是我怎样才能从 js 传递 id 呢?
我试过:
url: "<%= Rails.application.routes.url_helpers.verify_link_path(id) %>" + "&table_row="+row,
但我得到一个错误:-
undefined local variable or method `id' for#<#<Class:0x00000001ca3220>:0x007f6228c792f0>
(in /...linker/app/assets/javascript/verifying_link.js.erb)
最佳答案
- Insert it into the link
- Pass it as data
--
路线
正如您已经尝试过的那样,您可以在路线本身中传递它:
# app/assets/javascript/verifying_link.js
$(document).on("click", ".element", function(){
$.ajax({
url: "/verify_link/"+id+"&table_row="+row
});
});
这样做的方法是在您的 HTML 中包含 id
。
您的 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,
});
});
您需要确保将数据从 HTML 传递给 JS 才能完成这项工作
数据
或者(这仅适用于 collection
路由),您可以在数据标记中发送 id
。当然,这不会帮助您在 JS 中包含您的 id
,但它仍然非常重要:
#app/assets/javascript/verifying_link.js
$(document).on("click", ".element", function(){
var id = $(this).attr("id");
$.ajax({
url: "/verify_link",
data: { id: id }
});
});
这里的区别是,如果你想包含其他数据,你可以将它包含在 data
属性中。此外,您需要确保您的路由与您希望作为数据发送的内容相对应(IE member
路由需要将 id
附加到网址)
关于javascript - 使用ajax时如何将id从js传递到rails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953762/