我正在处理一个已从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变量
答案 0 :(得分:3)
你不能这样做。 Javascript运行客户端,Ruby运行服务器端。
答案 1 :(得分:1)
你做不到。所有值<%=
都在服务器端进行转换,并将其值发送给客户端。客户端没有红宝石。您必须向websocket或http服务器发送请求才能将一些数据传递给服务器。
答案 2 :(得分: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(如果从客户端事件分配给服务器)将极大地促进此过程。