2012-09-07 91 views
0

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

回答

0

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

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

0

指定产品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和$表行(”状态)。文本()为‘可用’和替换它与‘卖’