- Windows XP SP2
- Internet Explorer 6
- ruby 1.9.2p136 (2010-12-25) [i386-mingw32]
- Rails 3.0.3
上記環境にて、link_to :method => :delete が正しく動作しない。
scaffold で生成したコンテンツでもダメだった。
原因を調査してみたら、rails.js 内の以下の箇所で TypeError が発生していた。
function handleMethod(element) {
var method = element.readAttribute('data-method'),
url = element.readAttribute('href'),
csrf_param = $$('meta[name=csrf-param]')[0],
csrf_token = $$('meta[name=csrf-token]')[0];
var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
element.parentNode.insert(form); // ←←←この箇所
if (method !== 'post') {
var field = new Element('input', { type: 'hidden', name: '_method', value: method });
form.insert(field);
}
if (csrf_param) {
var param = csrf_param.readAttribute('content'),
token = csrf_token.readAttribute('content'),
field = new Element('input', { type: 'hidden', name: param, value: token });
form.insert(field);
}
form.submit();
}
debug してみると、たしかに element.parentNode に insert という function は存在していなかった。
とりあえず、以下のように修正することで回避可能。
// element.parentNode.insert(form); element.insert(form);
以下の環境だと、上記修正を行わなくてもちゃんと動いた。
- Ubuntu 10.04
- Google Chrome 10, Firefox 4.0
- ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
- Rails 3.0.4
怪しいのは IE6。別バージョンで試すことができない環境なのでどうしようもない。
んー、おかしい。
1 件のコメント:
IE6で同じ症状に見舞われ、悩んでいました。
おかげさまで解決できました。
コメントを投稿