【发布时间】:2015-07-04 07:11:05
【问题描述】:
我对 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
“解决方案”可能是我这样做:
redirect_to @post, change: [:comments, :super_test]
但问题是它回复了很多我不需要的数据!(而且响应时间更长)所以我真的想找到另一个解决方案。
我该如何解决这个问题? 我想过2个解决方案: 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;媒体中心PC 6.0) 时间戳:2015 年 4 月 25 日星期六 17:28:52 UTC
消息:无法设置 innerHTML 属性。此操作的目标元素无效。 线路:26 字符:30464 代码:0 网址:https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js
2) 找到一种方法来检查请求是否由 turbolinks/pjax 完成...并使用条件渲染或 redirect_to
- 但我不知道该怎么做,因为 turbolinks 不发送 像 jquery-pjax 这样的特定标头
有什么建议吗?我真的很感激!
PS:请不要给我推荐backbone/angular/ember/react,我已经知道它们(backbone),但我想试试turbolinks。
【问题讨论】:
-
你在哪里能弄明白?
标签: ruby-on-rails pushstate turbolinks