2011-02-03 125 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