堤です。
いまい様、ありがとうございます。
とても勉強になります。
> ・link_to のメソッドの仕様を調べる方法を教えてください
actionpack/lib/action_view/helpers/url_helper.rb ということですが、
ここにたどり着く過程をできれば、教えていただけないでしょうか?
例えば、XXXのメソッドの仕様を知りたい場合は、どのように調べれば
いいのか、見当がつきません。 ^^;;
かなり初歩的な質問で、すみません。
# C言語だと関数リファレンスマニュアルのインデックスを見れば、
# 調べたい関数の仕様などがわかるのですが・・・
いまいです。
From: "Hiroyuki Tsutsumi" < h.tsutsumi_at_gmail.com>
Date: Fri, 2 Jun 2006 16:59:20 +0900
> 本だと
> <%= link_to '破棄', { :action => 'destroy', :id => product },
> :confirm => "本当に破棄しますか?" %>
> となっており、ブラウザで「破棄」を選択しても、削除されませんでした。
>
> で、scaffoldで生成されたlist.rhtmlをみると
> <td><%= link_to 'Destroy', { :action => 'destroy', :id => product },
> :confirm => 'Are you sure?', :post => true %></td>
>
> となっており、下記のように「:post => true」を追加することで、動くようになりました。
>
> <%= link_to '破棄', { :action => 'destroy', :id => product },
> :confirm => "本当に破棄しますか?", :post => true %>
>
> そこで、質問ですが、
> ・本のコードで動かないのはバージョンの違いによるものなのでしょうか?
バージョンの違い、だと思います。*_controller.rb の上の方に、
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html )
verify :method => :post, :only => [ :destroy, :create, :update ],
:redirect_to => { :action => :list }
みたいなコードがありませんか?:destroy, :create, :update は POST の場
合のみ処理されるようになっています。それ以外のメソッドでアクセスする
と、:redirect_to => { :action => :list } されます。
> ・「:post => true」 で動くようになったのは、どうしてでしょうか?
このオプションにより、リンクの外側に form を追加して、(無理矢理 ;)
POST で送信するようになるからです。
> ・link_to のメソッドの仕様を調べる方法を教えてください
actionpack/lib/action_view/helpers/url_helper.rb を読む、でしょうか。
上の挙動も、post_javascript_function メソッドを見ればイメージが湧くと
思います。
--
Nobuhiro IMAI <nov@yo.rim.or.jp>
Key fingerprint = F39E D552 545D 7C64 D690 F644 5A15 746C BD8E 7106
--
ML: rails@ruby.ml.fdiary.net
使い方: http://QuickML.com/