2011-02-03 170 views
1

我想訪問JavaScript中的Ruby數組。請告訴我這樣做的方法。我的數組持有一個SQL查詢的結果。訪問javascript中的紅寶石數組

@contacts = Contact.order("contacts.position ASC") 

我試圖做到這一點....

for(var i=0; i< a; i++) 
    { 
     var firstnameV = "<%=Contact.order('contacts.position ASC')[i].first_name%>"; 
     var lastnameV = "<%=Contact.order('contacts.position ASC')[i].last_name%>"; 
     var emailV = "<%=Contact.order('contacts.position ASC')[i].email%>"; 
     var contactV = parseInt("<%=Contact.order('contacts.position ASC')[i].contact_no%>"; 
     var posV = parseInt("<%=Contact.order('contacts.position ASC')[i].position%>"; 
     tx.executeSql('INSERT INTO contact_table (firstname, lastname, email, contact, pos) 
     VALUES (firstnameV,lastnameV, emailV, contactV, posV)'); 
    } 
+2

只需渲染json並通過ajax訪問它 – apneadiving 2011-02-03 08:44:09

+1

@apneadiving您能否請您展示一下步驟。我是全新的rails和ajax。 – rdp 2011-02-03 09:07:53

回答

4

快速舉例說明如何將Ruby變量的值呈現給JavaScript。在views/layouts/application.html.erb中添加<%= yield:head%>到head標籤。然後在views/contacts/index.erb(或任何視圖使用)添加以下內容:

<%content_for :head do %> 
<script type="text/javascript"> 
window.onload = function() { 
    alert("First contact in database is <%=Contact.order('contacts.position ASC').first.name%>") 
} 
</script> 
<%end%> 

這將提醒您的數據庫中的第一聯繫人姓名。

0

Ruby是服務器端語言。 JavaScript主要是(服務器端 - 例如node.js)客戶端。如果您想要將值從Ruby傳遞給JS,則可以將該值作爲script標記中的視圖的一部分呈現,或通過AJAX檢索它們。

+0

你能否提供一個例子。 – rdp 2011-02-03 08:56:12

+0

@Tarscher在他的回答中給了你一個例子:)並且我建議閱讀關於JSON的內容:http://www.json.org/ – singles 2011-02-03 09:06:08

1

可以通過在紅寶石使用

to_json

方法

渲染做到這一點:JSON => @contacts