Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在rails中使用历史记录时,如何正确确定是否应该通过ajax重新加载页面?_Javascript_Ajax_Ruby On Rails 3_History.js - Fatal编程技术网

Javascript 在rails中使用历史记录时,如何正确确定是否应该通过ajax重新加载页面?

Javascript 在rails中使用历史记录时,如何正确确定是否应该通过ajax重新加载页面?,javascript,ajax,ruby-on-rails-3,history.js,Javascript,Ajax,Ruby On Rails 3,History.js,我将Rails3.2与datatables、bootstrap和jquery结合使用,这似乎使pjax、history.js、turbolinks、bbq等都无法正常工作,或者至少不能按我希望的方式工作。我希望能够通过前进和后退按钮浏览仪表板报告。到目前为止,我使用的系统是Chrome(根据我的about box,版本为27) 我有一系列按钮,每个按钮都使用index.js.erb中的此绑定通过ajax加载仪表板报告: $('document').ready(function(){ $('.

我将Rails3.2与datatables、bootstrap和jquery结合使用,这似乎使pjax、history.js、turbolinks、bbq等都无法正常工作,或者至少不能按我希望的方式工作。我希望能够通过前进和后退按钮浏览仪表板报告。到目前为止,我使用的系统是Chrome(根据我的about box,版本为27)

我有一系列按钮,每个按钮都使用index.js.erb中的此绑定通过ajax加载仪表板报告:

$('document').ready(function(){
  $('.updates_history').bind('ajax:before', function(){
      history.pushState(<%= params.to_json.html_safe %>,
        this.textContext,
        this.href);
    });
  });
这很好,除非我在参观之前先去历史博物馆。因此,我从一个about:blank页面开始,然后输入localhost:3000/dashboards url,然后四处导航。如果我在导航到dashboards页面之前一直回击,然后再点击forward,那么唯一加载的页面就是index.js.erb,它不会被编译。我怀疑这是因为我正在调用
$.ajax({url:document.location})
弹出历史记录状态。在这一行中,我应该做些什么来让一切都正常运行,即在报表之间来回跳转时不需要加载整页,但在返回控制器的支持时需要加载整页

<script type="text/javascript" charset="utf-8">
  $('document').ready(function(){
    //When 'next' or 'before' is clicked
    window.onpopstate = function(event) {
      $.ajax( { url:document.location } );
    };
});
</script>
respond_to do |format|
  format.js
  format.html
  format.json {render json: Datatable.new(view_context)}
  end
end