如何在模型中创建新条目时解决Active Admin中的Formtastic输入错误

时间:2017-01-19 08:18:19

标签: ruby-on-rails activeadmin formtastic

如果想要在Active Admin中为模型创建新条目,请单击操作按钮"创建新的新雇主"。然后我收到此错误消息:

管理员::雇主#new

中的Formtastic :: UnknownInputError

无法找到输入类BinaryInput

@input_class_finder.find(as)
  rescue Formtastic::InputClassFinder::NotFoundError
    raise Formtastic::UnknownInputError, "Unable to find input #{$!.message}"
  end

  # @api private

4 个答案:

答案 0 :(得分:1)

@Nikita,首先请阅读文档https://github.com/activeadmin/activeadmin/tree/68d50d4221976df9d42e5d670b0877770ca8eeef/docs,这将回答您的大部分问题。

默认情况下,ActiveAdmin呈现数据库表的所有列以显示表单,并且无法显示此特定的表 因为没有处理二进制列的选项(检查,雇主表中有一个二进制类型的列)

所以有两个选项

1)覆盖你在此处描述的表单声明     https://github.com/activeadmin/activeadmin/blob/68d50d4221976df9d42e5d670b0877770ca8eeef/docs/5-forms.md

如果您需要显示列,请使用 class BinaryInput < Formtastic::Inputs::StringInput end 选项。

2)也可以创建自定义输入来执行此操作添加初始化程序,使用可能不属于您的情况。

{{1}}

答案 1 :(得分:1)

解决方法

这对我有用:在下面创建一个文件,它将解决错误。

# app/inputs/inet_input.rb
class InetInput < Formtastic::Inputs::StringInput
end
  

在这种情况下,将inet替换为BinaryInput

原因

可能的问题是,Formtastic无法将列类型映射到HTML输入类型。

  

用formtastic(〜> 3.1)测试该溶液

答案 2 :(得分:0)

编辑User资源时遇到了同样的问题,该资源由Devise创建时具有

t.inet "current_sign_in_ip"

列类型。

如果可以将数据类型从inet更改为string,只需生成一个迁移:

rails g migration ChangeDatabaseColumnTypeForIpAddressesInUsers

class ChangeDatabaseColumnTypeForIpAddressesInUsers < ActiveRecord::Migration[5.2]
  def change
    change_column :users, :current_sign_in_ip, :string
    change_column :users, :last_sign_in_ip, :string
  end
end

答案 3 :(得分:0)

我遇到了这个问题,不喜欢StringInput解决方案,因为它是一行并且不能处理换行符。您可以通过

类似地解决此问题
# ./app/inputs/binary_input.rb
class BinaryInput < Formtastic::Inputs::TextInput
end

如这张图片https://i.stack.imgur.com/RHRex.png

所示