2

我正在处理一个从 websocket 调用的脚本。本页代码是 html.erb

它将变量传递给 javascript,并从该 javascript 变量中将其分配给 ruby​​ 变量,

这是代码

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变量分配给ruby变量

4

3 回答 3

3

你不可以做这个。Javascript 运行客户端,Ruby 运行服务器端。

于 2012-08-22T06:23:49.837 回答
1

你不能那样做。所有值<%=都在服务器端进行翻译,并将它们的值发送到客户端。客户端没有红宝石。您必须向您的 websocket 或 http 服务器发送请求,以便将一些数据传递给服务器。

于 2012-08-22T06:25:04.520 回答
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(如果从客户端事件分配给服务器)将极大地促进这个过程。

于 2012-08-22T06:33:45.953 回答