1

我正在使用带有数据表、引导程序和 jquery 的 rails 3.2,这种组合似乎使 pjax、history.js、turbolinks、bbq 等都不起作用,或者至少不能按照我想要的方式工作。我希望能够通过前进和后退按钮浏览仪表板报告。到目前为止,我的系统在 Chrome 中运行(根据我的关于框的版本 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);
    });
  });

然后我可以在我的 index.html.erb 中使用这个脚本弹出状态:

<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>

我的dashboards_controller.rb 中的respond_to块看起来像:

respond_to do |format|
  format.js
  format.html
  format.json {render json: Datatable.new(view_context)}
  end
end

这很好用,除非我在访问该站点之前访问历史。所以我从 about:blank 页面开始,然后输入 localhost:3000/dashboards url,然后四处导航。如果我在导航到仪表板页面之前一直回击,然后我向前打,加载的唯一页面是 index.js.erb,它没有被编译。我怀疑那是因为我只是打电话$.ajax( { url:document.location } );来弹出历史状态。我应该在那条线上做什么以使一切表现良好,即在报告之间弹跳时不需要整页加载,但在返回控制器的保护时需要整页加载?

4

0 回答 0