QA@IT

image_submit_tagのイベントをcontrollerでparamsで受け取る際に、.x .yがつく

3338 PV

環境:
Rails 3.2.12
Ruby 1.9.3

form_tagでくくった中に「OK」「キャンセル」のように二つ以上のsubmitボタンを配置したい。
ただ、actionは一つしか設定できないから、submit_tag に:name => "hogehoge"のようにオプションをつけて
action内でparams[:hogehoge]で処理を切り分ける、といった実装を行っているのですが、
View

<%= form_tag({:action => 'upload_file'}, {:multipart => true}) do %>

<%= submit_tag "Upload", :name =>"OK"%>
<%= submit_tag "Cancel", :name =>"Cancel"%>
<%end%>

Controller

  def upload_file

    if params[:OK] then
        #OKの時の処理
    elsif params[:Cancel]
        #Cancelの時の処理
    end
 
  end

といったようにしたいのですが、
たまにparamsの中にsubmit_tagの名前の後ろに.x .yが付き、意味不明な数字をさしていることがあります。
例:paramsの中身

"OK.x" => 91, "OK.y" => 12

なぜこうなってしまうのでしょうか?

申し訳ありませんが上記問題の解決法をご存じの方いらっしゃいましたら、
ご教授をお願いいたします。

宜しくお願いします。

回答

<input type="image"> は x, y に画像のクリックした座標が入るからです。

<button><img></button> という構造にすれば良いのではないかと思ったのですが、 <input type="submit"> で CSS を使って画像を指定するとか、javascript で submit してしまうという方法もあるようです。

http://www.webbibo.com/blog/htmlcss/input_image_btn.html

編集 履歴 (0)
  • znzさん
    ご回答ありがとうございます。
    なるほど、座標ですか。
    ご紹介いただいたページも参考になりました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。