如何在活动管理员中获取 form.input 的值(ruby on rails)

How do I get the value of a form.input in active admin (ruby on rails)

我正在使用管理框架 'active admin' 构建 RubyOnRails 应用程序。我的表单中有一个如下所示的下拉菜单:

  form do |f|    

    f.inputs do
      f.input :art, as: :select, :include_blank => "Bitte wählen!", label: 'art', :collection => ["Fachobjekt", "Gruppe", "Externes Dokument"]
    end
    f.actions    
  end

现在我想在我的控制器中检查选定的值。我试过了:


controller do
  after_save :update_object

  def update_object(guid)
      if params[:art].values == 'Fachobjekt'
        # do stuff
      end
  end
end

我在下拉列表中选择了 'Fachobjekt',但我得到的是 NoMethodeError "undefined method 'values' for nil:NilClass",因此 params[:art] 为空。

我的问题是:获取 f.input 字段的选定值的正确语法是什么?感谢任何提示!

[:root_tables] 是模型名称。我把它放在 [:art] 之前,就像 params[:root_tables][:art] 但同样的错误。

放一个

raise params.inspect

就在

之前
if params[:art]

行。您应该能够识别发布的信息在参数中的位置。

感谢您的所有提示!特别是使用 binding.pry 进行调试的提示帮助了我。我现在使用 f.select 而不是 f.input:

  form do |f|    

    f.inputs do
      f.select :art, ["Fachobjekt", "Gruppe", "Externes Dokument"], :prompt => 'Bitte wählen! '
    end
    f.actions    
  end

对于select,参数[:root_table][:art] 正在工作:

controller do
  after_save :update_object

  def update_object(guid)
      if params[:root_table][:art] == 'Fachobjekt'
        # do stuff
      end
  end
end

当我使用 f.input 时,[:art] 在 binding.pry 或加注 params.inspect 时甚至没有出现。 f.select 确实如此。 不过,至少现在可以用了,谢谢!