如何从html加载js.erb

时间:2013-03-25 10:45:51

标签: javascript jquery ruby-on-rails ajax

另一天,又过了一个晚上,我一直在敲打JS和JQuery。

我想通过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来解决这个问题。不适合我 - 我真的想在没有宝石的情况下解决这个问题。

1 个答案:

答案 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) %>");