对form_for使用Multiple FormBuilder

时间:2018-01-19 09:24:23

标签: ruby-on-rails

从官方指南中我看到我们可以在表单中使用另一个FormBuilder:

<%= form_for @person, builder: LabellingFormBuilder do |f| %>
  <%= f.text_field :first_name %>
<% end %>

但是,如何才能将来自不同宝石的多个表单构建器一起使用? (例如SimpleForm和Bootstrap形式)

2 个答案:

答案 0 :(得分:0)

  

您还可以使用自定义的FormBuilder类构建表单。   然后,子类FormBuilder并覆盖或定义一些更多的帮助器   使用自定义构建器。例如,假设你做了一个帮手   自动添加标签以形成输入。

这意味着您的表单构建器LabellingFormBuilder需要从类FormBuilder继承并覆盖或定义更多帮助程序。 方法列表,您可以在here找到。

要使用SimpleForm,您需要使用simple_form_for代替form_for

<%= simple_form_for @person do |f| %>
  <%= f.text_field :first_name %>
<% end %>

简单表单可以轻松集成到Bootstrap。为此,您必须在安装生成器中使用bootstrap选项,如下所示:

rails generate simple_form:install --bootstrap

答案 1 :(得分:0)

目前无法做到这一点。

表单相关的gem通常是一个扩展ActionView::Helpers::FormBuilder的类。如果有两个这样的,我们就不能让一个类扩展这些类来获得两者的功能。

除非将来,Rails添加ApplicationFormBuilder并鼓励宝石作者提供模块以作为其前缀。