[前][次][番号順一覧][スレッド一覧]

rails:311

From: ABE Masahiro <abe@c...>
Date: Wed, 03 Aug 2005 10:43:46 +0900
Subject: [rails:311] パラメタによるアクション名の指定

あべです。

0.13から(0.13.1からかもしれませんが)
アクション名がGET/POSTパラメタでは指定できなくなっています。

 http://example.com/user/edit/1
 http://example.com/user/edit?id=1
 http://example.com/user/?action=edit&id=1

以前はどれも User::editが呼ばれましたが、今は3番目は
User::indexが呼ばれるうえにparams[:action] も"index"
になっています。

これで何が困るかというと、

  <form action="/user" method="POST">
    <input type="hidden" name="id" value="1">
      :
    <input type="submit" name="action" value="edit">
    <input type="submit" name="action" value="delete">
    <input type="submit" name="action" value="update">
  </form>

のように、ひとつのフォームに複数のボタンを置いて共通の
パラメタで異なるアクションをダイレクトに呼ぶことができなく
なってしまったことです。
# そのほかにもアクションを隠しパラメタにもって
# 確認画面を共通にするとかできなくなりました

また、以前は before_filterで設定したコード内で
@params["action"] に代入すると飛び先が変更できましたが
いまは変わりません(ただし@action_nameに代入するとできる)。

そんなわけで[rails:207][rails:209]で出たコードは
今は動きません。
パラメタ名を"action"とは別にすればg0r0uさんの方法は有効です。

-- 
ABE Masahiro <abe@c...>


--
ML: rails@r...
使い方: http://QuickML.com/
Web Site: http://wiki.fdiary.net/rails/
ML Archives: http://www.fdiary.net/ml/rails/

[前][次][番号順一覧][スレッド一覧]