【问题标题】:Submitting ActiveAdmin form to non-ActiveRecord methods将 ActiveAdmin 表单提交给非 ActiveRecord 方法
【发布时间】:2014-06-23 16:14:49
【问题描述】:

在 ActiveAdmin 中,我有一些方法可以衡量用户正在使用哪些功能。这些方法特定于 ActiveAdmin,不会在应用程序中使用。例如,该方法可以告诉我们从 2013 年 7 月 5 日到 2013 年 9 月 15 日期间在所有公司中创建了多少 daily_reports。该方法将数据作为哈希返回。

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

其中 'time_span' 将是一个字符串,'yearly'、'monthly'、'weekly' 或 'daily'。

我不知道如何连接表单,以便输入将其数据提交给这些方法,并获得响应。如果选择了范围单选按钮,则表单需要提交到 metrics_histogram_by_range。否则它将提交给metrics_histogram_by_relative。有没有办法做到这一点,还是我需要结合这些方法?

【问题讨论】:

    标签: ruby-on-rails forms activeadmin


    【解决方案1】:

    您必须覆盖默认的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多