Ruby on rails Turbolinks 3并渲染部分

Ruby on rails Turbolinks 3并渲染部分,ruby-on-rails,pushstate,turbolinks,Ruby On Rails,Pushstate,Turbolinks,我对turbolinks3感到非常兴奋(它允许您只渲染一部分,而不是重新加载所有主体) 您可以从这里了解更多信息: 这很神奇,但我有个问题: 在不支持pushState的浏览器中(例如ie8/9),我不知道如何管理行为。 它在IE8上给了我这个错误: Could not set the innerHTML property. Invalid target element for this operation. 我的控制器代码是: def create @post = Post.fi

我对turbolinks3感到非常兴奋(它允许您只渲染一部分,而不是重新加载所有主体) 您可以从这里了解更多信息: 这很神奇,但我有个问题: 在不支持pushState的浏览器中(例如ie8/9),我不知道如何管理行为。 它在IE8上给了我这个错误:

Could not set the innerHTML property. Invalid target element for this operation.
我的控制器代码是:

  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]
但问题是,它回复了大量我不需要的数据!(而且响应时间更长)所以我真的想找到另一个解决方案

我怎样才能解决这个问题? 我考虑了两种解决方案: 1) 在旧浏览器上使用history.js/modernizr来填充pushState

  • 但是我试过了,但是我总是会犯同样的错误(比如如果我没有的话) 现代化者)

    网页错误详细信息

    用户代理: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:

2) 找到一种检查请求是否由turbolinks/pjax完成的方法…并使用条件呈现或重定向到

  • 但我不知道该怎么做,因为TurboLink不发送 像jquerypjax这样的特定头
有什么建议吗?我真的很感激


PS:请不要建议我使用主干/角度/余烬/反应,我已经知道它们(主干),但我想试试TurboLink。

你的第一反应是正确的,有了IE8,你需要现代化。问题不是你在这里编码或涡轮链接,而是IE8


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

您从哪里可以找到答案?