製品のリストと「販売済み」という列があります。ユーザーがステータスを false または true に変更すると、Rails アプリで製品の HTML ページ インデックスを更新しますが、すべての HTML ページをリロードせずに、製品のステータスを含む「div」のみを更新します。私の人生を楽にするチュートリアルや宝石はありますか? 私が見つけたすべてのチュートリアルは、クライアント側の AJAX 要求に関するものです。
2 に答える
製品IDを行に動的に割り当てます。テキストを変更する「td」にクラス「status」を追加します。
%tr{:id => "product_#{product.id}"}
%td Cell #Product
%td.status Available
%td #link_to controller method where product status is changed to 'Sold.'. Set ":remote => true" for request to be ajax.
ファイルsell_product.js.hamlを作成します(コントローラーメソッドとしてhamlとsell_productを考慮しています)。jsファイルで、特定のIDと$('。status')。text()を使用してテーブルの行を検索し、「Available」に置き換えて「Sold」に置き換えます。
HTTPでは、「会話」は常にクライアントによって開始されるため、サーバーが開始する要求はできません。本当にこれを実行したい場合は、サーバーをWebページに埋め込み、サーバーを開いてポートでリッスンする必要があります。これは、Webページからサーバーを起動する方法がなく、多くのネットワークがブロックするため、問題があります。正当な理由のある着信リクエスト。
すでに表示されているページの更新は、通常、クライアントがAJAXを介してサーバーを定期的に(数秒に1回など)ポーリングして、何かが変更されたかどうかを確認することによって行われます。これを行う1つの方法は、クライアントに最後のチェックの時刻を送信させ、Product.where("updated_at > ?", timestamp)
サーバー側でそれを返すことです。