gpt4 book ai didi

ruby-on-rails - 如何以正确的方式在 Rails 中执行 history.js?

转载 作者:行者123 更新时间:2023-12-03 17:56:54 24 4
gpt4 key购买 nike

嗨,大家好,
现在是我第四次尝试在 Rails 应用中实现 history.js。我有一种方法运行得很好,但是代码太丑了。今天我再次查看代码并想:我怎样才能使它更好、更容易、更 DRY?!
到目前为止我所做的(并且工作得很好,并不完美):

  • 套装remote: true到我的链接
  • jquery-ujs 获取 js.erb

  • 我的 HTML 看起来像:
    <body>
    <div id="content">
    some content with buttons, etc.
    </div>
    </body>
    js.erb包含:
    History.pushState(
    {
    func: '$(\'#content\').html(data);',
    data: '<%= j(render template: "news/index", formats: [:html]) %>'
    },
    'test title',
    '<%= request.url %>'
    );
    然后 history.js 获取该函数并为其提供数据。所以它取代了 content -div 与新生成的代码。它还会更新 URL。这段代码我必须放入每个(!) js.erb文件。
    我最后想让它变得不那么难看的想法是:
  • 套装remote: true到我的链接
  • 当一个链接被点击时,它会获取一些 js.erb它取代了 content -div
  • data-remote="true" 的所有链接会得到一个 ajax:success -处理程序
  • ajax:success新 URL 被推送到 history.js

  • 但是里面还有一个问题。然后我有 JavaScript 代码:
    $(document).on('ajax:success', 'a[data-remote="true"]', function() { ... });
    问题是: ajax:success如果我更换 div 就不会触发-标记链接(应该触发事件)所在的位置。
    也许有人可以解决我的问题...
    或者,还有更好的方法?

    最佳答案

    我只使用 jquery-ujs 和 pushState,popState。

    在这里看到我的回答:

    https://stackoverflow.com/a/27532946/345996

    关于ruby-on-rails - 如何以正确的方式在 Rails 中执行 history.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096608/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com