form_tagを使えばブロック内の全体を返してくれるかと思ったのですが、そうではないらしく最終行だけ返ってきてしまいます。
具体例
つまり
def generate_form(path)
form_tag(path) do
input_tag
submit_tag
end
endだとフォームそのものと最終行のsubmit_tagだけが表示されてその他の入力フィールドが一切表示されません。
対策
なので以下のように毎行Stringを保存しておきましょう。何でこんな仕様になってるんだろう…?
def generate_form(path)
form_tag(path) do
str = input_tag
str += submit_tag
str
end
end参考
[ruby on rails – How do I use form_tag from within a helper? – Stack Overflow][1]