使用ajax时如何将id从js传递给rails?

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)

Ric*_*eck 5

  1. 将其插入链接
  2. 将其作为数据传递

——

路线

正如您已经尝试过的,您可以在路线本身中传递它:

# 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)