【问题标题】:How to load js.erb from html如何从 html 加载 js.erb
【发布时间】:2013-03-25 10:45:51
【问题描述】:

又是一天,又是一个晚上,我在 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"
                       });
});

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

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

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

【问题讨论】:

  • 我认为你应该让你的问题更清楚。您是在寻找错误,还是在寻找做某事的方法。看看你的代码块,我想知道你的 URL 是否缺少尾随 /
  • 我能知道你到底想在这里做什么$("#container").html("&lt;%= escape_javascript(render '/users/show') %&gt;");
  • 刚刚编辑了问题。 @SagarBommidi 该字符串将“显示”视图呈现到容器 ID 中。

标签: javascript jquery ruby-on-rails ajax


【解决方案1】:

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

您正在寻找HTML5 pushState() method

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

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

history.pushState(null, "Page Title", "<%= user_path(@user) %>");

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 2023-01-17
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多