1

フィールド total_points を持つモデル Player があります。

私のホームページには、プレイヤー名と total_points があります。

<div id="player1">
  <h3><%= "#{@player1.first_name} #{@player1.last_name} (#{@player1.total_points})" %></h3>
</div>

ユーザーがプレーヤーの名前をクリックするたびに、@player1 の total_points フィールドを 1 ずつ増やしたいと考えています。これまでの私のjQuery(coffeescript)は次のとおりです。

/home.js.coffee
jQuery ->
  pointForPlayer1 = (e) ->
    e.preventDefault()
    console.log('player 1 clicked')

  $('#player1').click pointForPlayer1

これは機能します (コンソールにメッセージを記録するように)、クリックで @player1.total_points を 1 増やしてから、上記のメッセージを再レンダリングする方法がわかりません (できればページ全体をリロードせずに)。ありがとう!

4

2 に答える 2

0

jquery を使用することを選択したので (これはコンピューティング時代の最大の発明かもしれません :) )、これは比較的簡単です。

AJAX を使用してアプリにポストバックする post コマンドを使用することをお勧めします。したがって、あなたの場合、コーヒースクリプトは JQuery ドキュメントごとに $('#player1').click -> $.post(route, data, success method, datatype) になります

その後、success メソッドは戻りデータを受け取り、それを処理できます。この時点で html が変更された場合は、html を返し、適切な html のチャンクを JQuery に置き換えることができます。必要に応じて、JSON、XML などを返すこともできます。この場合、html のチャンクを返すのが適切なように思えます。それを行うには、レンダリングするための適切なビューが必要です。

于 2013-09-22T01:10:09.007 に答える