0

私の最初の Rails アプリの CoffeeScript 部分にたどり着きました。これまで JS/CoffeeScript をやったことがないので、たくさんの質問があります。で始まります:

私のアプリでは、ユーザーはタスク (またはアイデア、私はそれを呼んでいます) を「要求」(所有権を取得) できます。各ユーザーは、任意の時点で最大 3 つのアイデアを持つことができます。そう:

1) 現在のコードは次のようになります。

$ ->
  exports = this
  exports.claimedCount = 0
  $('.claim').bind 'ajax:success', ->
    $(this).text("Claimed")
    $(this).addClass("btn-success")
    claimedCount++
    alert(claimedCount)

これが行うべきことは、グローバル var を宣言しclaimedCountユーザーがアイデアを主張するたびにそれをインクリメントすることです。が実際に行うことは何もありません:Uncaught ReferenceError: claimedCount is not defined

何故ですか?変数を実際にどのように定義すればよいですか? 私がやろうとしていることのためにグローバル変数さえ必要ですか? (各アイデアには独自の [請求] ボタンがあります)。

2) ユーザーは、すでにいくつかのアイデアを主張しているときにページをレンダリングする可能性があります。したがって、claimedCount最初にページをレンダリングするときに Rails を使用するように設定する必要があります。これに関するポインタは大歓迎です(.js.coffeeファイルの名前を変更.js.coffee.erbしてそこで実行する必要がありますか?このようなjs初期化コードの通常の場所は何ですか?)

あなたが与えることができるどんな助けにも感謝します。

4

2 に答える 2

3

最初の質問に対する Khaled の回答に同意します。

2 つ目では、ファイルの名前を.js.coffee.erbに変更して、最初に erb で前処理し、次のように記述します。

window.claimedCount = <%= @user.claims.count %>
于 2013-01-02T19:09:56.317 に答える
2

コードをjs2coffee.comに移動して js に変換すると、変数が関数内にあるためグローバルではないことがわかります。

コーヒースクリプトでグローバル変数を宣言する方法に関するこの質問window.myvariableを確認できます(主に使用します)

2 番目の質問については、html の非表示フィールドに値を入力し、jquery セレクターを使用して取得できます。

<input type="hidden" id="claimsCount" value=<%= @user.claims.count %>>

次に、あなたのjsで

$('#claimsCount').val()

于 2013-01-02T18:51:53.057 に答える