提供自定义的SimpleForm输入
class MyCustomInput < SimpleForm::Inputs::Base
# some stuff
end
如何配置它,以使这些输入在默认情况下没有包装。
通常我会这样设置输入特定的包装器:
# initializers/simpleform
config.wrapper_mappings = {
my_custom: :my_wrapper
}
但是以下方法不起作用,并且默认的SimpleForm包装器仍然适用。
config.wrapper_mappings = {
my_custom: false
}
我知道在视图中有多种方法可以实现此目的,例如
<%= f.input :attribute, as: :my_custom, wrapper: false %>
或
<%= f.input_field :attribute %>
但这不是我想要的。
有没有一种配置输入的方法,以便默认情况下没有包装器?
答案 0 :(得分:1)
除了您已经在问题中提到的选项之外,仅使用input_field
而非input
(更多信息:https://github.com/plataformatec/simple_form#stripping-away-all-wrapper-divs),您可以这样定义包装器(未经测试) :
SimpleForm.setup do |config|
config.wrapper_mappings = {
my_custom: :wrapper_false,
}
config.wrappers :wrapper_false, tag: false do |b|
b.use :placeholder
b.use :label_input
b.use :hint, wrap_with: { tag: :span, class: :hint }
b.use :error, wrap_with: { tag: :span, class: :error }
end
end
然后在您的表单中:
<%= f.input :attribute, as: :my_custom %>
有关包装API的更多信息:https://github.com/plataformatec/simple_form#the-wrappers-api
编辑:
考虑到您提到的情况之后,请I sent a PR至simple_form
进行投影,以允许在wrapper: false
中配置wrapper_mappings
。如果它被接受,您应该能够直接在初始化程序中禁用包装器,如下所示:
config.wrapper_mappings = {
my_custom: false
}