ruby-on-rails-3activeadminformtastic

Insert a non-input row into a Formtasic form


I am using Formtastic 2.1.1 in Rails 3.2 (with Active Admin) and I want to insert a row into my form that does not have an input field present. Is this possible and what is the syntax in the Formtastic DSL to achieve this?

Here's an example:

form do |f|

    f.inputs "Model Info" do
      f.input :title
      f.input :published
      f.input :path
    end

end

I'd like to do something like this:

form do |f|

    f.inputs "Model Info" do
      f.input :title
      f.input :published
      f.input :path
      f.div "This is some important text that people using this form need to know"
    end

end

Has anyone done this with Formtastic before?


Solution

  • To insert any custom code in any place, you may use f.form_buffers.last:

    form do |f|
      f.form_buffers.last << "<p>Hello world!</p>".html_safe # The simple way
    
      ft = f.template # just a helper variable
    
      f.inputs "Foo" do
        f.input :title
    
        f.form_buffers.last << ft.content_tag(:li) do
          ft.content_tag(:p, "Hello again!") +
              ft.tag(:input, type: :hidden, name: "bar[]", value: "baz")
        end
        f.input :path
      end
    end
    

    Just be careful about the HTML structure. If you call this from f.inputs block, your code will be placed inside an <ol> element. On the "form" level, you are inside a <form> element.

    A little warning: As with any "undocumented feature" this method may change without warning in any new release.