我想通过HTML调用页面(并在标题中显示路径),但是还要加载js.erb脚本。或者,我想远程调用js.erb脚本,但也要更改http标头以指示新路由。
我想要这个是因为: a)我想学习,这让我感到沮丧 b)当前,当用户刷新时,他的当前页面不会出现,而是远程用于>的页面。真的来电进来了;;用户回到他不记得的页面会很困惑。
我正在实现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来解决这个问题。不适合我 - 我真的想在没有宝石的情况下解决这个问题。
答案 0 :(得分:0)
听起来你通过远程调用(我在点击链接或按钮后假设一个AJAX GET请求)正在加载页面,这可以正常工作,但URL没有在地址栏?
您正在寻找HTML5 pushState() method。
像这样更新你的show.js.erb文件:
$("#container").html("<%= escape_javascript(render '/users/show') %>");
history.pushState(null, "Page Title", "<%= user_path(@user) %>");