同一フォーム内で複数のイメージサブミットボタンを使う
2009年08月12日
同一のフォーム内に複数のサブミットボタンを設置し、
押されたボタンによってコントローラでの処理を分岐するような場合、
submit_tag と image_submit_tag では処理を変更する必要があります。
submit_tag の場合
view では、次のように記述します。
ここで取得した値の有無によって、どのボタンが押されたかを判別します。
image_submit_tag の場合
view では、次のように記述します。
submit_tag と同じように params[:a] 、params[:b] では値を取得できません。
代わりに params['a.x']、params['b.y'] でボタン画像のクリックした座標値を取得することができます。
この 'x'、'y' は画像のX座標、Y座標を表しています。
押されたボタンによってコントローラでの処理を分岐するような場合、
submit_tag と image_submit_tag では処理を変更する必要があります。
submit_tag の場合
view では、次のように記述します。
<% form_tag(:action => "test") do %>controller では、次のように値を取得します。
<%= submit_tag("A", :name => "a") %>
<%= submit_tag("B", :name => "b") %>
<% end %>
ここで取得した値の有無によって、どのボタンが押されたかを判別します。
ex>ボタン"A"を押した場合
params[:a] #=> "A"
params[:b] #=> nil
image_submit_tag の場合
view では、次のように記述します。
<% form_tag(:action => "test") do %>controller では、次のように値を取得します。
<%= image_submit_tag("/img/a.gif", :name => "a") %>
<%= image_submit_tag("/img/b.gif", :name => "b") %>
<% end %>
ex>ボタン"A"を押した場合このように image_submit_tag の場合は、
params[:a] #=> nil
params[:b] #=> nil
params['a.x'] #=> 15(実際にクリックした座標の数値)
params['b.y'] #=> nil
submit_tag と同じように params[:a] 、params[:b] では値を取得できません。
代わりに params['a.x']、params['b.y'] でボタン画像のクリックした座標値を取得することができます。
この 'x'、'y' は画像のX座標、Y座標を表しています。

















