ダメでしょ!

プログラミングとか怒られた話とか…

simple_form を利用している時にsubmit ボタンにボタン名と value をセットする方法

前提

導入gem

普通の書き方だと、ボタン名が value の値になってしまう

通常、submit ボタンは以下のように記載すると思います。

= f.button :submit, 'ボタン名' { name: "#{f.object_name}[completed]", value: '1', class: 'btn btn-primary' }

しかし、この状態で実際に動作させてみると、ボタン名には value に指定した"1" が表示されてしまいます。
simple_form では、通常ボタン名が value にセットされますが、 value がセットされている場合はボタン名が反映されないためです。

こうすればうまくいく

では、どうすればいいのかというと、以下のように submit を指定せず、button を指定し、 do を付けてボタン名を入れ子にするとうまくいきます。

= f.button :button, { name: 'test', value: '1', class: 'btn btn-primary' } do
  ボタン名

simple_form 手強い...

simple_form を利用していない場合はハマらないと思うんですが、simple_form を導入していると最終的な html の出力が simple_form 次第になるので、ハマってしまった時に解決させるまでには試行錯誤が必要になることが多いです。。