16

我在 Rails 3.2(带有 Active Admin)中使用 Formtastic 2.1.1,我想在我的表单中插入一行,但没有输入字段。这可能吗?实现这一点的 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

4 回答 4

25

我自己想通了。我只需要在没有任何方法调用的情况下插入 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
于 2012-05-10T00:11:08.023 回答
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>元素内部。

一点警告:与任何“未记录的功能”一样,此方法可能会在任何新版本中更改而不会发出警告。

于 2013-06-19T16:08:49.820 回答
4

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>

在此处FORMS和此处ARBRE进行了太长时间的 Google 搜索后,从文档中得到了这个想法 。

于 2019-02-18T21:51:11.440 回答
3

这是@arsen7 答案的稍微简化的形式:

f.form_buffers.last << 
  "<p>Activate interlock, dynatherms connected</p>".html_safe

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

简单的 HTML 插入

这是一个模仿 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 样式的 HTML 插入

于 2014-10-28T20:44:07.630 回答