使用ajax时如何更改URL字符串?

使用ajax时如何更改URL字符串?,ajax,ruby-on-rails-3,url,Ajax,Ruby On Rails 3,Url,我有RubyonRails应用程序,我正在使用大量ajax使网页动态化,并且只更改其中的特定部分 在某些情况下,当使用ajax更改页面内容时,URL不会更改,我发现这是不正确和不正确的行为 例如: 我有一个忘记的密码功能,其中一封电子邮件是发送给用户的编辑链接。链接如下所示: http://127.0.0.1:8080/password_resets/-k63MeQcBkCZt3fovkfsTA/edit 当用户打开它并更改密码时,我使用ajax提交表单。因此,将显示一条消息,说明密码已更改,

我有RubyonRails应用程序,我正在使用大量ajax使网页动态化,并且只更改其中的特定部分

在某些情况下,当使用ajax更改页面内容时,URL不会更改,我发现这是不正确和不正确的行为

例如:

我有一个忘记的密码功能,其中一封电子邮件是发送给用户的编辑链接。链接如下所示:

http://127.0.0.1:8080/password_resets/-k63MeQcBkCZt3fovkfsTA/edit
当用户打开它并更改密码时,我使用ajax提交表单。因此,将显示一条消息,说明密码已更改,用户现在可以登录,但URL保持不变


在Rails中,哪种方法可以解决这个问题?

您希望在一个.js文件中使用类似的东西吗

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

不过,您可能希望签出TurboLinks…自动执行您看起来想要的操作。

这是正常行为,ajax调用不会更改url。如果你这样做了,它就不再是ajax了,它只是在改变页面。但你可以:

document.location="http://127.0.0.1:8080/password_resets/-k63MeQcBkCZt3fovkfsTA/psswd-Ok";
如果需要,可以在url中添加一个哈希,它仍然是ajax:

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

谢谢,州政府看起来像是在耍花招。TurboLinks非常有趣,但是我们可以说它们比ajax请求更快——毕竟ajax只返回页面的一部分——TurboLinks(如我所读)再次返回整个页面。据我所知,TurboLinks/PJAX返回呈现的页面,而不通过ajax返回布局/Css。但如果这有效…继续使用它!