私はジャックポット賭博サイトを作成しようとしています。ユーザーがポットにお金を追加するときに、コントローラにポットを更新する方法があります。私はホームページにポットの合計を表示し、誰かがポットにお金を追加するとすぐにそれをAjaxで更新したいと考えています。私はgon gemを使用して、コントローラーからジャバスクリプトまでの壷の合計などの変数を渡します。これは、ページがリロードされたときに機能しますが、ajaxを使用してupdateメソッドが呼び出されたときには機能しません。相続人Ajaxリクエスト中にGon変数がjsをレールコントローラから渡さない
私をPagesController:
def home
@jackpot = Jackpot.last
gon.pot = @jackpot.pot
end
JackpotsController:
def update
@jackpot = Jackpot.find(params[:id])
if params.has_key?(:amount)
@jackpot.update(pot: @jackpot.pot + params[:amount].to_f)
gon.pot = @jackpot.pot
end
respond_to do |format|
format.js
end
end
Javascriptを:(URLで:idは今のハードコードされた)
$("#bet-btn").click(function() {
$.ajax({
type: "POST",
url: "/jackpot/update/21",
datatype: "json",
success: function() {
console.log("Pot size: " + gon.pot);
updatePot();
},
error: function() {
console.log("error")
}
});
});特にJavaScriptの/アヤックスので、レールとすること(もハードコード量)
<%= link_to "Place Bet", update_pot_path(@jackpot, :amount =>
0.1), method: :post,:remote => true, id: "bet-btn", class: "btn btn-info btn-lg" %>
私はかなり新しいです:
これは、ポットのための賭けを配置する
function updatePot() {
updateDonutChart('#jackpot-donut', gon.pot , true);
}
ボタンをドーナツプログレスバーを更新しますどんな助けもありがとう。ありがとう!コントローラで
'console.log("ポットサイズ: "+ gon.pot);'更新されたポット値を表示して期待通りに動作しますか?また、開発者コンソールにもエラーはありますか? – abax
@abaxいいえ、それは古いgon.pot(現在は更新されていませんが)を表示します。ページがリフレッシュされ、ajaxリクエストが再度送信されると、新しい値が表示されます。 gon.potは#homeアクションのページに設定されているので、これは(私が思う)です。 – RT5754
「gon.watch」、https://github.com/gazay/gon/wiki/Usage-gon-watchを試してみてください – abax