2012-08-22 114 views
2

我正在从websocket调用一个脚本。这个代码页是html.erb的将JavaScript变量分配给ruby变量

它传递变量给JavaScript,并从JavaScript变量,我想将它指定红宝石变量,

下面是代码

function set_color(val1,val2) 
{ 

    <%background_color_id = %> 
    var obj_color_id = '<%=background_color_id ='+val2+'%>' ; 
    console.log(obj_color_id) 
} 

的从控制台日志结果是+val2+

如果我通过var obj_color_id = '<%=background_color_id ='val2'%>' ;

从控制台日志的结果是val2

请帮我分配JavaScript变量红宝石变量

+0

尝试var obj_color_id ='background_color_id <%='val2'%>'; –

回答

0

其实,如果我理解你的代码(你的问题没有得到很好的表述,不幸的是),简单的解决方法是:

1-通过指定服务器端代码的值:

function set_color(val1,val2) 
{ 
    var bkgdColorId = "<%= background_color_id %>"; 
    var obj_color_id = bkgdColorId; 
    console.log(obj_color_id) 
} 

2 - (或)从指定的客户端代码的值:

function set_color(val1,val2) 
{ 
    /** pseudo-code **/ 
    on-click-event: makeAjaxCallToServer(){ 
    urlForWebService, { color: val2 } 
    } 
} 

使用一些jQuery的(如果分配给来自客户端的事件服务器)将极大地促进这一进程。

+0

我已经通过ajax调用解决了它,但有什么办法只是将客户端javasscript值的值传递给服务器变量?比如'<%= background_color_id ='+ val2 +'%>' –

+1

不可能,因为所有服务器端代码都是在客户端(Web浏览器)可以评估JavaScript(变量)之前处理的。然而,你可以构建一个服务器端Web服务(PHP文件?),它就像一个表单文章(或者获取)一样工作,并且接收到一个javascript post的值。您可以使用AJAX调用来执行此操作(或将表单提交给服务器)。 –

3

你不能做到这一点。 Javascript运行客户端,Ruby运行服务器端。

+0

本页是html.erb页面,我需要将javascript变量分配给ruby变量 –

+0

你不能这样做。如果您想要将数据从客户端(Javascript)分配给服务器(Ruby),则需要通过Ajax等请求发送数据。 – oldergod

1

你不能那样做。所有值<%=都在服务器端翻译并将其值发送给客户端。客户端没有红宝石。您必须将请求发送到您的websocket或http服务器才能将某些数据传递到服务器。

+0

本页是html.erb页面,我需要将javascript变量分配给ruby变量 –

+0

正如我所说的,你不能这样做。只需发送您的变量通过websocket或发送请求到您的服务器.. – Ch4rAss