1

「タスク」を表示する非常に単純なビューがあります。

ユーザーが入力した後、基本的にタスクの値を更新したいと思います。ただし、ruby ステートメントを実行して .erb のタスクを更新することはできません。

入力が入力されたら、.rb ファイルの値を更新する方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

Ruby コードは、ページがユーザーに提供される前に実行されます。Javascript コードは、ユーザーがページにいる間にユーザー クライアントで実行されるため、Javascript から Ruby コードを正確に実行することはできません。できることは、Javascript を使用して Ruby サーバーに非同期要求を送信することです。これにより、変数が取得され、必要な保存が行われます。

jQuery を使用しているので、その post() および ajax() 関数を見てください。( http://api.jquery.com/jQuery.post/ )

次のようなことができます

$.post("/my/handler", { name: "John" }, function(data) {
/* Do the updates on the page according to the data received from the server */ 
} );

次に、Rails ルートが /my/handler への POST 要求を処理するように設定する必要があります。( http://guides.rubyonrails.org/routing.htmlが役に立つかもしれません)。

レンダリングする Web ページは、$.post のコールバックの関数 (データ) で使用されるデータになります。「通常の」Web ページである必要はありません。次のような任意のタイプのテキスト データをレンダリングできます。 json.

http://guides.rubyonrails.org/layouts_and_rendering.htmlの「json のレンダリング」セクションを参照してください。これは、js で必要なデータをレンダリングするためのおそらく最も便利なオプションであるためです。

ただし、ユーザーがキーボードを何度も叩くアプリケーションで、すべてを高速に処理する必要がある場合は、ユーザーがそれを行うたびにサーバーに 1 つの要求を行うことになることに注意してください (これは、 Web ページのデータ全体ではなく、テキストの一部のみを返すため、毎回のページは軽量になりますが、大量の要求がある場合は、サーバーの負荷が大幅に増加する可能性があります)。そのような場合で、多数の同時ユーザーが存在する場合は、永続的な接続にソケットを使用してアプリケーションを構築することを検討してください。

于 2012-06-19T22:26:39.203 に答える