在 simple_fields_for 中指定包装器
Specifying a wrapper in simple_fields_for
当使用 Simple Form gem 时,是否可以指定包装器及其 HTML?我不想通过 HTML 手动创建 <div>
,但想了解是否有 wrapper
选项可以传递到 simple_fields_for
。
给定
<%= f.simple_fields_for :xxx, do |xxx| %>
...
<% end %>
我希望 simple_fields_for
创建一个包装器,<div class="xyz">...</div>
围绕其中的任何代码输出
类似问题:
最简单的方法可能就是创建一个包装 simple_fields_for
.
的方法
# config/initializers/special_form_builder.rb
module SpecialFormBuilder
def special_fields_for(record_name, record_object = nil, options = {}, &block)
super.simple_fields_for(record_name, record_object = nil, options = {}) do
content_tag :div, class: "xyz" do
block.call
end
end
end
end
module SimpleForm
class FormBuilder
include SpecialFormBuilder
end
end
我遇到了这个问题,给定的解决方案不起作用,问题是隐藏的 id 字段在包装元素之外呈现。
看来问题不在simple_form,问题出在FormHelper#fields_for_nested_model方法中的rails。
此外,简单表单接受 simple_form_for 上的 wrapper
选项,但它定义了嵌套表单输入中使用的默认包装器,而不是表单本身的包装器。
我看到的唯一解决方案是使用选项 include_id: false
并在 wrapper 标记中添加隐藏字段。
当使用 Simple Form gem 时,是否可以指定包装器及其 HTML?我不想通过 HTML 手动创建 <div>
,但想了解是否有 wrapper
选项可以传递到 simple_fields_for
。
给定
<%= f.simple_fields_for :xxx, do |xxx| %>
...
<% end %>
我希望 simple_fields_for
创建一个包装器,<div class="xyz">...</div>
围绕其中的任何代码输出
类似问题:
最简单的方法可能就是创建一个包装 simple_fields_for
.
# config/initializers/special_form_builder.rb
module SpecialFormBuilder
def special_fields_for(record_name, record_object = nil, options = {}, &block)
super.simple_fields_for(record_name, record_object = nil, options = {}) do
content_tag :div, class: "xyz" do
block.call
end
end
end
end
module SimpleForm
class FormBuilder
include SpecialFormBuilder
end
end
我遇到了这个问题,给定的解决方案不起作用,问题是隐藏的 id 字段在包装元素之外呈现。
看来问题不在simple_form,问题出在FormHelper#fields_for_nested_model方法中的rails。
此外,简单表单接受 simple_form_for 上的 wrapper
选项,但它定义了嵌套表单输入中使用的默认包装器,而不是表单本身的包装器。
我看到的唯一解决方案是使用选项 include_id: false
并在 wrapper 标记中添加隐藏字段。