2012-08-22 260 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