2017-11-12 11 views
0

他のすべてのソリューション(stackoverflow)が動作していないようで、私のコードを投稿しています。私は、出力に変数をしたい:ここではjqueryのJavascriptタグ内のRails変数にアクセスできない

経由@less_per_unitは_form.html.erb内部の私のタグです:

<script> 
$(document).on('keyup', ".input-quantity", function(){ 
    $.ajax({ 
     url: "/so_check_increment", 
     type: "GET", 
     data: { quantity: $(this).val(), product_id: $(this).closest('tr').find('.input-product_code').val()} 
    }); 
    $(this).closest('td').next('td').find('.increment').text('<%== j @less_per_unit%>'); 
}); 
</script> 

そして、ここでは私のコントローラです:

def check_increment 
    @less_per_unit = "testing" 
    end 

私がことを知っていますAjaxが動作し、私もルートを設定しました。 binding.pryを試してみると、レールが@less_per_unitを見つけることができますが、javascriptで出力することはできません。

答えて

1

ので、これが動作しない:

が、その後@less_per_unitニーズがどのそのアクションのビューファイルでそれを使用するためにそこに初期化されるように、私たちはコントローラ「ポスト」の「新しい」このフォームはアクションでレンダリングされたとしましょうあなたは使用しています。どこでAJAX呼び出しを使用していて、その呼び出し中に、既にレンダリングされたhtmlファイルにはアクセスできないインスタンス変数を定義しています。

したがって、check_incrementアクションからJSONデータを返し、そのデータをAJAX呼び出し応答で受け取ってから使用する必要があります。

+0

実際にjは "escape javascript"のためのレールコードです。私は、私のような他のスタックオーバーフローの質問から学んだ。私は余分な=とjを取り除こうとしましたが、それでも仕事はしません。 – Bassman

+0

私はそれを知らなかった。しかしなぜ余分な「=」。ドキュメントごとに、 '<%= j @less_per_unit%>'はうまくいくはずです。 –

+0

私はそれを試みましたが、それでも値は表示されません。私はconsole.log( '<%= j @less_per_unit%>')も試みました。運がない。 – Bassman

関連する問題