2013-06-25 27 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";