※ ChatGPTを利用し、要約された質問です(原文:Rails3でのクリックされたボタンの判定について)
Rails3でのクリックされたボタンの判定について
このQ&Aのポイント
Rails3でのクリックされたボタンの判定方法が不明です。一つのフォームに複数のサブミットボタンを配置し、コントローラーでどのボタンが押されたのか判定したいですが、正しい方法がわかりません。
試した方法ではparamsから値を取得できず、どのボタンが押されたかを判断することができません。javascriptを使用してボタンが押されたことを判定する方法も考えられますが、もっと標準的な方法があるか知りたいです。
この問題は一般的な処理であるため、他に方法があると思います。Rails3でのクリックされたボタンの判定について詳しい方の回答をお待ちしています。
Rails3でのクリックされたボタンの判定について
現在Rails3でWEBアプリの開発をしているのですが
実現方法が不明な事が有るので質問させて頂きました。
実行環境は
OS:Windows7
Railsバージョン:3.0.9
APサーバー:WEBrick
です。
実現方法が不明なのは、一つのフォームに複数のサブミットボタンを配置し
コントローラーでどのボタンが押されたのか判定する方法です。
ビューにおいてフォーム内に
<%= submit_tag 'OK', {:disable_with => "Sending…"} %>
<%= submit_tag 'CANCEL', {:disable_with => "Sending…"} %>
と言う様にサブミットボタンを配置し
コントローラーでどちらのボタンが押されたのかを判定する方法なのですが
検索して調べてみると
if 'OK' == params[:commit] then
OKボタンが押された際の処理
else
CANCELボタンが押された際の処理
end
と言う風に出来ると言う情報を見つけたのですが、実際にやってみると
上記の様な値はparamsから取得出来ないので、正しく動作しません。
paramsで取得した値の中身を見ても、それらしい値も無く
何を判断すればどのボタンが押されたのかを判断出来るのかが判らず
非常に困っております。
サブミットボタンにjavascriptのコードを埋め込み
送信前にHIDDEN項目にクリックされたボタンを表す値を埋め込むと言った方法で
回避する事も可能かとは思いますが、標準的なやり方とも思えず
また、良く行われる処理だと思いますので、他に方法が有る様に思えます。
どなたかご存知の方が居れば御回答お願いします。
お礼
御回答ありがとうございます。 原因が判らなかったのでサーバーサイドを調べていたのですが テキストフィールド等の値は送信されて来ていましたので いずれにしろフレームワークの問題だろうとは思っていたのですが JavaScriptの問題だったのですね 回答者さんに提案して頂いたjqueryへの乗り換えか rails.jsの改善かを検討したいと思います。 丁寧な御回答ありがとうございました。