7

フォームを生成するために使用しているヘルパーがあります。フォームのフィールドを生成するために使用されるパラメーターは、ヘルパーに渡されます。テンプレートの外でブロックを使用する方法がわかりません。

例えば:

def generate_form(path, fields)
    form_tag(path, method: :get) do
        # what do I do in here?
    end
end

ブロック内でパーシャルをレンダリングすると、レンダリングされた Web ページに何も表示されません。一連のタグ (field_tag、text_field_tag など) を結合すると、生の html がページに表示されます。

Rails 3.1.0 を使用しています

4

1 に答える 1

11

Rails要素ヘルパーは文字列を返すので、次のことができます:

def generate_form(path, fields)
  s = form_tag(path, method: :get) do
    p = input_tag
    p << submit_tag #(everything will be wrapped in form tag)
    p #returns p from block
  end
  s.html_safe #returns s and avoids html escaping
end
于 2012-09-29T19:32:40.043 に答える