0

請求書にさまざまなアイテムを含めることができる請求書アプリケーションを構築しています。

請求書ビューには、すべてのアイテムに対して次のような行があります。

<%= f.text_field :price %>
<%= f.text_field :quantity %>

ページを再送信することなく、Ajax を使用して請求書に新しい項目を追加できます。

これはかなりうまくいきます。

ただし、ユーザーが毎回ページを再送信しなくても、すべてのアイテムの合計が Ajax を介して更新されると便利です。

これを行う方法を誰か教えてもらえますか?

助けてくれてありがとう。

4

2 に答える 2

0

それはあなたの既存のコードに依存します。データは JSON 形式で送信/受信しますか? ある種のクライアント側処理 (プレーンな JavaScript、jQuery、またはその他のフレームワーク) を使用してみてください。

:remoteそれとも、js.erb テンプレートでより伝統的な Rails フォームを使用していますか? その場合は、 create.js.erb で請求書の合計を更新できます。のようなもの (請求書の合計は id="total" のタグでラップされていると仮定し、アイテムは請求書に属し、請求書には合計フィールドがあります)

... # your current code
$("#total").update("<%= escape_javascript(@item.invoice.total)%>");

削除アクションと更新アクションも同じです。

于 2012-09-20T16:04:23.807 に答える
0

これを処理するには、ある種のフロントエンド MVC または MVVM フレームワークの使用を検討する必要があります。ノックアウトjsを見てください:

Model-View-View Model (MVVM) パターンを適用して動的な JavaScript UI を簡素化する

http://learn.knockoutjs.com/#/?tutorial=collections <-- このチュートリアルは、あなたが何を求めているかをほぼ正確に示しています。

基本的に、行エントリのコレクションを持つビューを表すviewModelをセットアップします。これは「観察可能」です。つまり、ノックアウト言語では、変更(追加または削除)されるたびにバインディングが更新されます. たとえば、各行項目にバインドされた with である可能性があります。

次に、自動的に更新される計算されたオブザーバブルを持つことができます

于 2012-09-20T14:02:36.457 に答える