[英]Custom Form Builder in Rails 5.1
在我的Rails 5.1应用程序中,我希望构建一个自定义表单生成器(以设置某些标签的样式)。
因此,像往常一样,我从基础开始,尝试添加显示在Rails文档中的示例。
我已经添加了
#app/form_builders/custom_form_builder.rb
class CustomFormBuilder < ActionView::Helpers::FormBuilder
def div_radio_button(method, tag_value, options = {})
@template.content_tag(:div,
@template.radio_button(
@object_name, method, tag_value, objectify_options(options)
)
)
end
end
并以我的形式
<%= form_with model: @user, url: users_path, method: :post do |f| %>
...
<%= f.div_radio_button(:admin, "child") %>
<% end %>
但是我明白了
ActionView::Template::Error (undefined method `div_radio_button' for
#<ActionView::Helpers::FormBuilder:0x00007fb6e933d5b8>)
我在这里想念什么吗?
我看到的唯一区别是该示例使用了form_for
而我使用了form_with
但是由于所有标准构建器都可以使用,所以我想这不是问题。
谢谢
PS-添加CustomFormBuilder
之后,我已经多次重新启动服务器。
不是吗
<%= f.radio_button(:admin, "child") %>
代替
<%= f.div_radio_button(:admin, "child") %>
UPDATE
抱歉,我昨天急于回答。 再次查看它, 您似乎缺少了表单的构建器选项 ,因此您仍在使用ActionView :: Helpers :: FormBuilder而不是自定义表单构建器类 。
<%= form_for @person, :builder => MyFormBuilder do |f| %> I am a child: <%= f.div_radio_button(:admin, "child") %> I am an adult: <%= f.div_radio_button(:admin, "adult") %> <% end -%>
上面的代码片段来自docs
所以您可能需要的是
<%= form_with model: @user, url: users_path, method: :post, builder: CustomFormBuilder do |f| %> ... <%= f.div_radio_button(:admin, "child") %> <% end %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.