2012-11-22 98 views
0

我在rails 3.2的展示頁面上有一個交互式的javascript圖表,該頁面還包含一個鏈接到圖中項目的標題。我想在用戶點擊圖表中的項目時通過ajax請求更新頁面,但我不希望圖表重新加載。我以前沒有實現過Ajax請求,我不能說我完全理解Web開發的新概念。然而,我已經讀了一些關於turbolinks和pjax的內容,我的問題似乎與這些有關,但我不知道如何實現這樣的方法。通過Rails中的ajax請求更新頁面

show.html.erb 

<% provide(:title, @item.name) %> 

<h2> 
    <%= @item.name %> 
</h2> 
… 

的URL路徑的顯示頁面(對於第1項):

localhost:3000/items/1 

我想我將不得不改變實例變量,@item,通過從我的javascript Ajax請求碼。但是,我也想更新網址,因此它不僅僅是一個可變更改,而是一個url重定向。有關如何做到這一點的任何建議?

+0

您可以使用jQuery通過JavaScript修改DOM,而不是@item。我只是谷歌'JavaScript重定向',看看會發生什麼。 –

+0

謝謝。重定向不會重新加載整個頁面? – graphmeter

回答

1

這不是一個可以用代碼來回答的問題,因爲實現你想要的東西有太多的方法,沒有足夠的信息來給你任何有意義的東西。

您需要進行的關鍵區別是在服務器端和客戶端端代碼之間。 Ruby在服務器上執行,JavaScript在客戶端的瀏覽器中執行。因此,您無法使用AJAX查詢修改您的@item變量。你可以做的是編輯使用AJAX呈現的HTML,但這本身就是一本值得幾本書的主題。

Turbo鏈接和PJAX是AJAX的一個實現,當您單擊鏈接時,它會重新加載<body>標記的全部內容(或者您可以定義的部分),而不是執行正常的頁面重新加載。這樣可以節省大量時間,因爲資產(JavaScript,樣式表等)不會重新加載。這可能是也可能不是你需要的,所以看看the PJAX example page

在進一步研究之前,確實值得關注AJAX。我可以推薦的一種資源是一本名爲Agile Development With Rails的書。這貫穿了構建Rails應用程序的整個過程,在頂部添加了AJAX甜味。

但是,網上有很多資源。首先,瞭解Ajax如何在Rails之外工作,然後開始使用谷歌搜索「Rails和AJAX」。

+0

謝謝你的回答。我的想法是點擊圖中的某些內容與點擊鏈接是一回事,然後可以使用turbolinks/pjax方法來實現這種效果,但也許這是錯誤的? – graphmeter

+0

看看http://pjax.heroku.com/,然後點擊恐龍/外星人鏈接。這種事情能爲你想要的工作嗎?如果是這樣,抓住他們的示例存儲庫,並選擇它:) –

+0

謝謝:)。這基本上是我希望我的「鏈接」是svg中的對象的效果,我會嘗試深入挖掘。 – graphmeter