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 に答える
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 に答える