Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
Ruby on rails 向非ActiveRecord方法提交ActiveAdmin表单_Ruby On Rails_Forms_Activeadmin - Fatal编程技术网

Ruby on rails 向非ActiveRecord方法提交ActiveAdmin表单

Ruby on rails 向非ActiveRecord方法提交ActiveAdmin表单,ruby-on-rails,forms,activeadmin,Ruby On Rails,Forms,Activeadmin,在ActiveAdmin中,我有一些方法可以测量用户正在使用的功能。这些方法特定于ActiveAdmin,不会在应用程序中使用。例如,该方法可以告诉我们从2013年7月5日到2013年9月15日,所有公司都创建了多少份每日报告。该方法以散列形式返回数据 在ActiveAdmin界面中,我需要一个表单。在此表单中,我将指定查询的时间范围、“创建或更新”选项以及要跟踪的特定数据类型。我希望表格看起来像这样: ActiveAdmin.register_page "Metrics" do form d

在ActiveAdmin中,我有一些方法可以测量用户正在使用的功能。这些方法特定于ActiveAdmin,不会在应用程序中使用。例如,该方法可以告诉我们从2013年7月5日到2013年9月15日,所有公司都创建了多少份每日报告。该方法以散列形式返回数据

在ActiveAdmin界面中,我需要一个表单。在此表单中,我将指定查询的时间范围、“创建或更新”选项以及要跟踪的特定数据类型。我希望表格看起来像这样:

ActiveAdmin.register_page "Metrics" do

form do |f|

    # radio buttons for yearly, monthly...etc. calls metrics_histogram_by_relative
    # one option is 'range'. When selected, it calls metrics_histogram_by_range
        # renders a small range text box 

    # radio buttons for created or updated

    # check boxes for data types

    # check boxes for companies, default: all

    # f.submit

end
range方法的标头如下所示:

def metrics_histogram_by_range(start_day, end_day, updated_or_created, 
                           data_types=[:itbs, :projects, :daily_report_entries, :schedules]),
                           companies = Company.find_each)
def metrics_histogram_by_relative(time_span, updated_or_created, 
                              data_types=[:itbs, :projects, :daily_report_entries, :schedules],
                              companies = Company.find_each))
相对时间方法标头如下所示:

def metrics_histogram_by_range(start_day, end_day, updated_or_created, 
                           data_types=[:itbs, :projects, :daily_report_entries, :schedules]),
                           companies = Company.find_each)
def metrics_histogram_by_relative(time_span, updated_or_created, 
                              data_types=[:itbs, :projects, :daily_report_entries, :schedules],
                              companies = Company.find_each))
其中“time_span”将是一个字符串,“yearly”、“monthly”、“weekly”或“daily”


我不知道如何连接表单,以便输入将数据提交给这些方法,并获得响应。如果选择了范围单选按钮,则表单需要按范围提交到metrics\u histogram\u。否则,它将按度量值提交直方图。有没有办法做到这一点,或者我需要结合使用这些方法?

您必须覆盖默认的ActiveAdmin创建方法。在表单块后插入与此类似的代码:

controller do
  def create
    if permitted_params[:metrics][:radios] == "radio_relative"
      # Call metrics_histogram_by_relative(). You can access the form values in the array: permitted_params[:metrics]
    else 
      # Call metrics_histogram_by_range()
    end

    # You can do changes in Metrics using the global variable.
    @metrics = Metrics.new
    @metrics.companies = "all"      # The other attributes not changed here will set up by the filled form.

    create! do |succes, failure|
    end
  end
end