Skip to content

Latest commit

 

History

History
35 lines (28 loc) · 851 Bytes

use_and_extend_formbuilder.md

File metadata and controls

35 lines (28 loc) · 851 Bytes

扩展 Form Builder

使用:

<%= form_for @person do |f| %>
  Name: <%= f.text_field :name %>
  Admin: <%= f.check_box :admin %>
<% end %>

这里的 f 是 Form Builder 的实例对象,所以可以直接调用 FormBuilder 提供的方法。

扩展:

你可以继承于 Form Builder,然后构建和表单相关的 helper 方法,举例:

class MyFormBuilder < 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_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 -%>