2014-09-20 67 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文件直接。您可以在網址中傳遞值或在您的視圖中創建隱藏塊。然後你可以閱讀這些值。