0

我有一个产品列表和一个名为“已售”的列。当用户将状态更改为 false 或 true 时,我希望我的 rails 应用程序更新产品的 html 页面索引,但只更新包含产品状态的“div”,而不重新加载所有 html 页面。是否有教程或宝石可以让我的生活更轻松?我找到的所有教程都是针对客户端 AJAX 请求的。

4

2 回答 2

0

服务器发起的请求是不可能的,因为在 HTTP 下,“对话”总是由客户端启动的。如果你真的想这样做,你需要在你的网页中嵌入一个服务器并让它打开并监听一个端口,这是有问题的,因为没有办法从网页启动服务器并且因为许多网络阻塞传入的请求,有充分的理由。

更新已经显示的页面通常是通过让客户端定期通过 AJAX 轮询服务器来完成的(例如每隔几秒一次)以询问是否有任何更改。一种方法是让客户端发送其最后一次检查的时间,并在Product.where("updated_at > ?", timestamp)服务器端执行并返回该时间。

于 2012-09-07T12:27:29.357 回答
0

将产品 ID 动态分配给行。在您要更改文本的“td”中添加一个“状态”类。

%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() 到“可用”的表行并将其替换为“已售”

于 2012-09-07T12:40:09.877 回答