Rails根据表单输入重新加载chartkick

时间:2014-03-11 17:16:29

标签: ruby-on-rails ruby chartkick

我在rails 4 app中使用chartkick。我目前运行此代码:

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

现在的问题是:我希望有一个小形式,用户可以选择不同的指标或限制传入(即将其更改为前3或从views到{{1}或者w / e)。

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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;
  });
});

希望这对未来的探险家有所帮助!