2016-08-16 9 views
0

スコアカウンタがあり、そのスコアカウンタの値をルビ変数に割り当てようとしていて、その変数を保存しています。Ruby変数にjavascript変数を割り当てる

ビュー:

 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

を私は、フォームの送信を追加するために自分のコードを編集したが、どのように私は、あなたがいないnums11 @ – nums11

+0

@csanderルビー変数にjavascriptの変数を割り当てます。 Rubyコードは、何かがクライアントに送信される前にサーバ上で実行されます。一旦あなたがクライアントにいるなら、Ruby関連の何かを行う唯一の方法はサーバー(例えばAjax、Websocketなど)にリクエストすることです。 –

+0

フォームの送信後もajaxリクエストをしなければなりませんか? @DaveNewton – nums11

-1

次のコードを試してみてください。

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

これは間違った方法です。彼はJSをRubyに、RubyをJSにしたくない。したがって、それは何らかの種類のHTTPコールを必要とするサーバーへのクライアントです。 –

+0

はいJavascriptからRubyの場合、JS呼び出しのみが必要です –