ruby-on-rails 带有块捕获的FormBuilder帮助器方法在ERB中不起作用

pod7payv  于 2023-02-17  发布在  Ruby
关注(0)|答案(1)|浏览(119)

我有一个自定义的FormBuilder,它有一个group方法,作为每个label/input/hint/error组合的 Package 器。group方法本身非常简单,但是当我尝试从ERB使用它时,就像使用“fields_for”或类似的方法一样,它不能正确地呈现。

def group(**options, &)
  options[:class] = class_names(options[:class] || "flex flex-col mt-4", options.delete(:classes))
  
  content_tag(:div, capture(&), **options)
end

在使用表单助手的ViewComponent中,我可以很好地执行以下操作

def call
  @form.group(**@group) do
    concat @form.label(:tags, @label.delete(:text), **@label)
    concat @form.text_field(:tags, **@system_arguments)
  end
end

但如果我尝试将其写入ERB部分,它要么根本不呈现group中的 Package 器,要么只呈现text_field而不呈现label

<%= @form.group(**@group) do %>
  <%= @form.label(:tags, @label.delete(:text), **@label) %>
  <%= @form.text_field(:tags, **@system_arguments) %>
<% end %>

不知道我错过了什么让ERB版本正常工作...

x4shl7ld

x4shl7ld1#

有一个修复程序,但尚未发布:

  • 一个月一次 *
# Gemfile
gem "view_component", github: "ViewComponent/view_component"
# config/application.rb
config.view_component.capture_compatibility_patch_enabled = true
  • 网址:http://www.example.comviewcomponent.org/known_issues.html#form_for-compatibility*

相关问题