我对turbolinks3很兴奋(它允许你只渲染部分而不是重新加载所有的身体) 您可以从此处了解更多相关信息: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.
我的控制器代码是:
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
A'解决方案'可能是我做的:
redirect_to @post, change: [:comments, :super_test]
但问题是,它回复了我不需要的大量数据!(响应时间更长)所以我想找到另一个解决方案。
我如何解决这个问题? 我考虑过2个解决方案: 1)使用history.js / modernizr对旧浏览器上的pushState进行polyfill
但是我已经尝试但是我总是得到同样的错误(就像我没有 Modernizr的)
网页错误详情
用户代理: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
有什么建议吗?我真的很感激!
PS:请不要建议我使用骨干/角度/余烬/反应,我已经知道它们(骨干),但我想尝试使用turbolinks。答案 0 :(得分:0)
你的第一直觉是正确的,IE8你需要现代化。这个问题既不是你的编码也不是涡轮链接,它是IE8。
PS:Turbolinks实际上并没有取代JS框架,如果你愿意,你可以完美地使用其中的一个。我确实将它与React和Angular一起使用。 Turbolinks只是避免重复加载相同的东西几次(感觉已经很神奇)。