将非输入行插入Formtasic表单

时间:2012-05-09 21:02:08

标签: ruby-on-rails-3 activeadmin formtastic

我在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做过这个?

4 个答案:

答案 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

在我的表单中看起来像这样:

Simple HTML insert

这里有一个模仿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

看起来像这样:

ActiveAdmin-style HTML insert

答案 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>

Google搜索时间过长后,从文档中得到了这个想法 FORMS和此处ARBRE