2013-06-25 34 views
0

我有紅寶石的rails應用程序,我使用了很多ajax,以使網頁變爲動態並只更改它的特定部分。如何在使用ajax時更改更改URL字符串?

在某些情況下,當頁面內容用ajax改變時,URL不會改變,我認爲這是不正確的,而不是正確的行爲。

對,例如:

我有一個已忘記的密碼功能,其中一個電子郵件發送給用戶一個鏈接編輯。鏈接如下所示:

http://127.0.0.1:8080/password_resets/-k63MeQcBkCZt3fovkfsTA/edit 

當用戶打開它並更改其密碼時,我使用ajax提交表單。因此,會顯示一條消息,指出密碼已更改並且用戶現在可以登錄,但URL仍保持不變。

這是在Rails中解決這個問題的正常方法嗎?

回答

2

你想用這樣的事情在你的.js文件之一

window.history.pushState('object', 'New Title', url); 

你可能想,雖然檢查出TurboLinks ......做什麼好像你正在尋找自動。

+0

感謝,對pushState的樣子做的伎倆。 TurboLinks非常有趣,但是我們可以說它們比ajax請求更快 - 畢竟ajax只返回頁面的一部分 - turbolinks(正如我讀過的)會再次返回整個頁面。 – gotqn

+0

據我瞭解,TurboLinks/PJAX返回呈現的頁面,沒有通過Ajax的Layout/Css。但是,如果這個工程...繼續使用它! – ovatsug25

0

這是正常的行爲,ajax調用不會更改url。如果你這樣做,它不再是ajax,它只是改變頁面。但你可以:

document.location="http://127.0.0.1:8080/password_resets/-k63MeQcBkCZt3fovkfsTA/psswd-Ok"; 
如果你願意,你可以只是在URL添加一個哈希,它仍然AJAX

document.location.hash="psswd-Ok";