我需要更新我的index.html.erb文件(用於產品),但不用重新加載整個頁面。 例如,我有一個名爲「Sold」的列,其值爲「YES」或「NO」。我有一個後臺更新任務,更新了這些值,但我希望我的索引文件能夠更新,顯示用戶可以看到哪些產品銷售與否。我不知道如何從rake任務中調用這樣的更改。請幫忙嗎?我看到的大多數ajax和rails 3「教程」主要涉及用戶到服務器的交互,而不是服務器到用戶的交互。Rails 3和Ajax
1
A
回答
1
有many methods用於獲取服務器的更新。
- 輪詢(setTimeout的,使每隔一段時間一個Ajax請求)
- 長輪詢(什麼Facebook的使用)
- 彗星(阻塞請求,不讓它完成,同時定期注入的JavaScript,類似長輪詢)
- 的WebSockets(HTML5的東西)
- 的Flash/Java小程序等
通常一個簡單的投票,每一個那麼多,塞康ds將完成這項工作。 - >(asciicast)
Here是不同的方法的比較。
+0
對於投票中的那個railscasts鏈接+1。 –
0
您可能會在您的產品索引頁上添加JavaScript代碼,以便定期ping您的服務器以獲取產品的狀態(每n秒)。如果你的網頁上有很多產品,這可能是一個昂貴的通話。所以我對你index.html.erb
<script type="text/javascript">
$('document').ready(function() {
$.ajax({
method: 'get',
url : 'products/ping',
dataType : 'json',
success: function (json) {
// iterate through json objects and update their respective sold status
// on page.
}
});
</script>
這樣的事情然後平路由添加到您的產品控制器,它基本上與包含要在您的視圖更新的產品的狀態和ID的JSON對象響應。因此,當Ajax請求完成並獲得JSON對象時,請遍歷產品並根據其ID來更新該產品的狀態。所以,你對你的產品的控制器上的行動將是這個樣子:
# app/controllers/products_controller.rb
def ping
respond_to do |format|
products_sold_statuses = {}
format.json do
Products.all.each do |product|
# add product sold status and probably id to products_sold_statuses
end
render :json => product_sold_statuses, :layout => false
end
end
end
該代碼是不是測試,因此只是用它作爲建設中的鹼。它還假定你正在使用JQuery。
相關問題
- 1. AJAX與Rails 3和jQuery?
- 2. Rails 3和Ajax混淆
- 3. AJAX與Rails 3
- 4. Rails 3 - Ajax helpers
- 5. Rails 3 Ajax搜索
- 6. rails 3 with ajax created
- 7. Ajax for Rails 3:onchange
- 8. Rails 3 - Ajax和控制器重構
- 9. Jquery ajax和Rails 3 - >加載內容
- 10. jQuery和Rails 3 ajax:失敗回調
- 11. Rails 3的每種方法和Ajax
- 12. BackboneJS和Rails 3 - 與$ .ajax同步問題
- 13. Rails 3 AJAX問題 - UJS
- 14. Rails 3,處理ajax響應
- 15. rails 4 bootstrap 3 ajax modal
- 16. 的Rails 3:通過AJAX
- 17. Rails 3 select and onchange without Ajax
- 18. Rails 3中的jQuery Ajax
- 19. 服務器端Ajax Rails 3
- 20. Rails 3 + Select2 multiple ids + AJAX
- 21. Rails 3 - 自動AJAX請求
- 22. rails 3 jquery ajax部分
- 23. 用Rails 3學習Ajax的資源3
- 24. 帶ajax動作的Rails select_tag(Rails 3和jQuery)
- 25. javascript和rails 3
- 26. Rails 3和CSS
- 27. actionwebservice和Rails 3/
- 28. rails 3和PDFkit
- 29. Rails 3和Carrierwave
- 30. jQuery和Rails 3
這是因爲服務器無法向瀏覽器發起請求(或多或少)。您可以進行短期或長期投票。 –