フォームは 1 つのアクションにのみ送信されます。
i18n を使用してボタン テキストを定義し、コントローラー アクションのコミット パラメータの値の i18n 値を確認します。
例えばあなたの形で
<%= submit_tag I18n.t('checkout.button.place_order'), :class => "submit" %>
f.submit ボタンについても同様です。
次に、コントローラーで
if params[:commit] == I18n.t('checkout.button.place_order')
Do something
else
Do something else
end
en.yml または実際のテキストを定義するもの
en:
checkout:
button:
place_order: 'Place Order'
もちろん、ニーズに合わせて調整するだけです
i18n を使用すると、コントローラーのロジックに影響を与えることなく、i18n 定義のボタンのテキストを簡単に変更でき、使用したい国際化/翻訳で引き続き機能します。
これを使用して、1 つのフォームに好きなだけボタンを設定し、必要な条件付きロジックをコントローラー アクションに追加できます。
UPDATE
I18n は国際化の略です (単語で 18 文字:))。en.yml という名前のロケール フォルダーにファイルを作成し、必要なものを上記の形式で定義すれば、準備完了です。t を使用して、必要な場所で I18n 変数を参照します。ヘルパー 詳細な説明については、この railscast をご覧ください
http://railscasts.com/episodes/138-i18n
更新 2以下の mu is too short のコメントに応えて
name 属性を追加しないのはなぜですか? 次に、コンテンツに関係なくボタンを操作できます。a には、param 内にあまり意味のない埋め込み HTML を含めることができることに注意してください。
i18n を使用すると、テキストがまったくチェックされないため、このコメントは完全に無効になります。好きなようにテキストを作成できます。実際、I18n を使用することをお勧めします。上記の例では、「Place Order」として定義されている値ではなく、コントローラー「checkout.button.place_order」の定数をチェックしていることに注意してください。