1. ホーム
  2. ruby-on-rails

[解決済み] Railsで同じフォームに複数の送信ボタンを作成するにはどうすればよいですか?

2022-11-07 22:01:58

質問

送信ボタンを複数個用意したいのですが、どうすればよいですか?

Contact_Callのインスタンスを作成するフォームがあります。

1つのボタンで通常通り作成します。

もう一つのボタンは作成されますが、デフォルトとは異なる :attribute 値を持つ必要があり、また、コントローラで使用される、異なるが関連するモデルに属性を設定する必要があります。

どうすればよいのでしょうか? ルートを変更することはできないので、[:params]によって拾われる別の変数を送信する方法がありますか?

そうすると、コントローラでcase文を設定するのはどうすればいいのでしょうか?

どのように解決するのですか?

送信ボタンを複数作成し、それぞれに異なる値を指定することができます。

<% form_for(something) do |f| %>
    ..
    <%= f.submit 'A' %>
    <%= f.submit 'B' %>
    ..
<% end %>

これで出力されます。

<input type="submit" value="A" id=".." name="commit" />
<input type="submit" value="B" id=".." name="commit" />

コントローラ内部では、サブミットされたボタンの値は、パラメータ commit . 値をチェックして、必要な処理を行います。

def <controller action>
    if params[:commit] == 'A'
        # A was pressed 
    elsif params[:commit] == 'B'
        # B was pressed
    end
end

しかし、これはビューとコントローラを強固に結びつけるものであり、あまり好ましくないことを覚えておいてください。