【问题标题】:Rails reload chartkick based on form inputRails 根据表单输入重新加载 chartkick
【发布时间】:2014-03-11 17:16:28
【问题描述】:

我在 rails 4 应用程序中使用 chartkick。我目前运行这段代码:

<%= bar_chart groupArticles(metric, limit) %>groupArticles() 是一种将数组放入 chartkick 的自定义方法。例如,<%= bar_chart groupArticles("views", 5)%> 为我提供了 views 指标的前五篇文章。

现在的问题是:我想要一个小表单,用户可以在其中选择要传入的不同指标或限制(即,将其更改为前 3 名或从 views 更改为 date 或 w/ e)。

然后我想重新加载图表(我有 URL 参数来获取页面上的其他内容,所以我不能使用新的 url 参数来实现这一点(我认为?)。

这背后的原因是我有一个表格,我使用 url 参数在同一页面上对其进行排序。如果用户更改图表,我不希望用户放弃当前的排序。

这可能吗?如何构建该表单?

【问题讨论】:

    标签: ruby-on-rails ruby chartkick


    【解决方案1】:

    目前此功能尚未实现(请参阅https://github.com/ankane/chartkick/issues/74)。

    为了在图表中显示新数据,我重新加载了页面。它允许使用新数据重新初始化图表。

    【讨论】:

      【解决方案2】:

      截至Dec 4, 2016,您可以结合使用JQuery 表单提交和Chartkick 的内置功能来刷新图表而无需重新加载页面。一、point your chart at a custom endpoint

      <%= bar_chart charts_group_articles_path %>
      

      charts_group_articles_path 类似于

      class ChartsController < ApplicationController
        def group_articles_chart
          groupArticles(params[:metric], params[:limit])
        end
      end
      

      然后,在app/assets/javascripts/,创建一个小文件:

      $(document).ready(function() {
        $('form').submit(function(e) {
          e.preventDefault();
          data = $(this).serialize();
      
          Chartkick.eachChart( function(chart) {
            chart.updateData(chart.getDataSource() + '?' + data);
          });
      
          return false;
        });
      });
      

      希望这对未来的探索者有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-08
        • 2015-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2022-11-22
        相关资源
        最近更新 更多