2014-09-20 53 views
1

我该如何拨打铁路线路并从js传入身份证。使用ajax时,如何将js中的id传递给rails?

我切换到使用轨道线路通过我的应用程序,包括在JS

我有一个电话:

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

回答

3
  1. Insert it into the link
  2. 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做这项工作


数据

或者(这只能在工作0路由),您可以发送数据标签中的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附加到URL)

0

,你不能访问到Rails的值在js文件直接。您可以在网址中传递值或在您的视图中创建隐藏块。然后你可以阅读这些值。

相关问题