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?
Figured this out myself. I just needed to insert the html without any method calls, like so:
form do |f|
f.inputs "Model Info" do
f.input :title
f.input :published
f.input :path
end
f.inputs "Custom HTML Stuff" do
"<div id=\"element-name\">
Some kind of content
</div>".html_safe
end
end
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.
IDK if this is still something people search for but it was for me. Since form_buffers
has been deprecated, I did the following and it worked out beautifully (with some CSS help).
form do |f|
f.inputs "Model Info" do
f.input :title
f.input :published
f.input :path
li "Your important text here", class: "some_class"
end
end
this outputs:
<li class="some_class">
Your important text here
</li>
Got this idea from the docs after a too long Google search here FORMS and here ARBRE.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With