2016-08-16 173 views
0

我有一個分數計數器,我試圖將該分數計數器的值賦給一個ruby變量,然後保存該變量。將javascript變量分配給ruby變量

查看:

 var score = 0; 
     window.setInterval(
     function countscore() { 
      if($('#game-area').is(':animated')){ 
       score = score + 1; 
       document.getElementById("score").innerHTML = score; 
       document.getElementById("score").submit(); //trying to assign here 
      } 

     }, 100); 

控制器:

def index 
    @user = User.find(current_user)  
    @score = @user.score 
end 

回答

1

你需要做的事情比這更復雜。 ERB代碼生成一個發送給客戶端的HTML文件,該文件不知道服務器軟件將HTML文件發送給它,所以它不能分配服務器端變量。您必須以某種方式將值上傳到服務器。例如,您可以使用表單提交,URL查詢字符串參數或AJAX請求。

+0

我編輯我的代碼添加一個表單提交,但我將如何再JavaScript變量賦值給變量紅寶石@csander – nums11

+0

@ nums11你不知道。在將任何內容發送到客戶端之前,Ruby代碼在服務器上執行。一旦你在客戶端上,你可以做任何與Ruby相關的事情的唯一方式就是向服務器發出請求(例如,Ajax,Websockets等) –

+0

因此,即使在表單提交之後,我仍然會說必須提出ajax請求? @DaveNewton – nums11

-1

試試下面的代碼:

var score = '<%= @user.score %>' 
+0

這是錯誤的方法。他希望JS到Ruby,而不是Ruby到JS。因此它是服務器的客戶端,它需要某種類型的HTTP調用。 –

+0

是對於Javascript到Ruby,你只需要一個JS調用 –