我在Rails 3.2中使用Formtastic 2.1.1(使用Active Admin),我想在我的表单中插入一行,不有一个输入字段。这是可能的吗?Formtastic DSL中的语法是什么来实现这一目标?
以下是一个例子:
form do |f|
f.inputs "Model Info" do
f.input :title
f.input :published
f.input :path
end
end
我想做这样的事情:
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
之前有没有人使用Formtastic做过这个?
答案 0 :(得分:22)
自己想出来。我只需要在没有任何方法调用的情况下插入html,如下所示:
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
答案 1 :(得分:16)
要在任何位置插入任何自定义代码,您可以使用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
请注意HTML结构。如果您从f.inputs
块调用此代码,则代码将放在<ol>
元素内。在“表单”级别,您位于<form>
元素内。
稍微警告:与任何“未记录的功能”一样,此方法可能会在任何新版本中发出更改而不会发出警告。
答案 2 :(得分:2)
以下是@ arsen7答案的略微简化形式:
f.form_buffers.last <<
"<p>Activate interlock, dynatherms connected</p>".html_safe
在我的表单中看起来像这样:
这里有一个模仿ActiveAdmin默认样式的内容:
f.form_buffers.last << (<<END
<li class="string input optional stringish">
<label class="label">Activate interlock</label>
<div style="display: inline-block;">Dynatherms connected</div>
</li>
END
).html_safe
看起来像这样:
答案 3 :(得分:1)
IDK(如果仍然是人们搜索的内容,但这是给我的)。由于form_buffers
已被弃用,因此我进行了以下操作,效果很好(在CSS的帮助下)。
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
此输出:
<li class="some_class">
Your important text here
</li>