0

又一天,又一个晚上,我在 JS 和 JQuery 上敲了敲头。

我想通过 HTML 调用一个页面(并在标题中显示路由),但让它也加载一个 js.erb 脚本。或者,我想远程调用 js.erb 脚本,但还要更改 http 标头以指示新路由。

我想要这个是因为:a)我想学习,这让我很沮丧 b)目前,当用户刷新时,他的当前页面没有出现,而是远程 => true 调用的那个页面;;返回到他不记得的页面会让用户感到困惑。

我正在实现 JQuery.pageless 插件。我远程调用用户/显示页面,这就是我的 show.js.erb 文件中的内容:

$(function(){
$("#container").html("<%= escape_javascript(render '/users/show') %>");
        $('#relationship_list').pageless({ totalPages: "<%= @reviews.count %>"/5+1
                       , url: '/reviews'
                       , params: {id: "<%= params[:id] %>"}
                       , loaderMsg: "loading"
                       });
});

现在这段代码是 A-OK。它在从 show.js.erb 远程调用时工作。问题是我想通过 html 而不是远程加载“用户显示”页面。这意味着该脚本不会被加载。我需要找到另一种不显眼的方式来加载它。

我想重申:代码中没有错误。

希望有人可以提供帮助。另请注意:有人写过使用 gon gem 来解决这个问题。不适合我——我真的很想在没有宝石的情况下解决这个问题。

4

1 回答 1

0

听起来您的页面加载通过远程调用工作(我假设单击链接或按钮后发出 AJAX GET 请求),它工作正常,但地址栏中的 URL 没有更新?

您正在寻找HTML5 pushState() 方法

像这样更新你的 show.js.erb 文件:

$("#container").html("<%= escape_javascript(render '/users/show') %>");

history.pushState(null, "Page Title", "<%= user_path(@user) %>");
于 2013-03-26T10:19:24.287 回答