gpt4 book ai didi

ruby-on-rails - Turbolinks 3 和渲染部分

转载 作者:行者123 更新时间:2023-12-04 05:51:50 25 4
gpt4 key购买 nike

我对 turbolinks3 感到很兴奋(它允许你只渲染一部分而不是重新加载所有的 body )
你可以从这里阅读更多关于它的信息:https://github.com/rails/turbolinks/blob/master/CHANGELOG.md
这很神奇,但我有一个问题:
在不支持 pushState(例如 ie8/9)的浏览器中,我不知道如何管理行为。
它在 IE8 上给了我这个错误:

Could not set the innerHTML property. Invalid target element for this operation.

我的 Controller 代码是:
  def create
@post = Post.find(params[:post_id])

if @post.comments.create(comment_params)
render '_comment', change: [:comments, :super_test], layout: false, :locals => { comment: @post.comments.last }
else
render json:'error'
end
end

“解决方案”可能是我这样做:
redirect_to @post, change: [:comments, :super_test]

但问题是它回复了很多我不需要的数据!(响应时间更长)所以我真的想找到另一个解决方案。

我该如何解决这个问题?
我想过2个解决方案:
1) 在旧浏览器上使用 history.js/modernizr 对 pushState 进行 polyfill
  • 但我试过了,但我总是得到同样的错误(就像我没有
    现代化)

    网页错误详情

    用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0
    时间戳:2015 年 4 月 25 日星期六 17:28:52 UTC

    消息:无法设置 innerHTML 属性。此操作的目标元素无效。
    线路:26
    字符:30464
    代码:0
    URI:https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js

  • 2) 找到一种方法来检查请求是否由 turbolinks/pjax 完成...并使用条件渲染或 redirect_to
  • 但我不知道我该怎么做,因为 turbolinks 不发送
    一个特定的标题,就像 jquery-pjax

  • 有什么建议 ?对此,我真的非常感激!

    PS:请不要向我推荐主干/角度/ Ember / react ,我已经知道它们(主干),但我想尝试 turbolinks。

    最佳答案

    您的第一直觉是对的,对于 IE8,您将需要 Modernizr。问题不在于您在这里编写代码或 turbolinks,而是 IE8。

    PS:Turbolinks 实际上并没有取代 JS 框架,如果你愿意,你可以完美地将它与其中一个框架结合使用。我确实将它与 React 和 Angular 一起使用。 Turbolinks 只是避免多次重新加载相同的东西(感觉已经很神奇了)。

    关于ruby-on-rails - Turbolinks 3 和渲染部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868521/

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