【Rails】1つのformに別々のformatのsubmitボタンを配置する

例えば検索フォームを作っていて、「検索」ボタンと「CSV出力」ボタンを置きたいときがあります。

  • 検索ボタンでは、検索フォームに入力した条件でレコードを絞り込み、結果をviewに表示したい。formatはhtml
  • CSV出力ボタンでは、検索フォームに入力した条件でレコードを絞り込み、結果をCSVに出力したい。formatはcsv

form内で使える f.submit には1つのformatしか指定できません。
そこで、2つ目以降のformat用には button_tag を使います。

<%= form_with(model: @reports) do |f| %>
  ...
  <%= f.submit '検索' # html %>
  <%= button_tag 'CSV出力', value: 'csv', name: 'format' # csv %>
<% end %>