Я пишу приложение Rails 2.3.8 и использую стандартный помощник link_to
.У меня есть разумное количество ссылок, которые используют пользовательские методы, отличные от GET, поэтому я передаю параметр :method => :whatever
в link_to
, и он генерирует ссылку с помощью обработчика onclick, например, так (для удобства чтения добавлен отступ):
<a
onclick="
var f = document.createElement('form');
f.style.display = 'none';
this.parentNode.appendChild(f);
f.method = 'POST';
f.action = this.href;
var s = document.createElement('input');
s.setAttribute('type', 'hidden');
s.setAttribute('name', 'authenticity_token');
s.setAttribute('value', '31M3q8SJkRz7f0R80l42Z2W7O2N7ZrzufhWQYql/Zd8=');
f.appendChild(s);
f.submit();
return false;"
href="/transactions/1015/transcribe"
>
Enter Data
</a>
Теперь по какой-то причине IE (оба 7 и 8 - два, которые я тестировал) решил, что return false;
в конце недостаточно, чтобы помешать ему перейти по ссылке, и я заканчиваюдо получения двух запросов на мой сервер: запрос POST от обработчика onclick, который я хочу, и запрос GET от самой ссылки, чего я не делаю.Фактически, этот маршрут не существует ни для чего, кроме запроса POST, поэтому, когда браузер следует запросу GET, пользователь получает сообщение об ошибке «Неверный URL».Не хорошо.
Кто-нибудь видел это раньше и может сказать мне, что это вызывает?Или, еще лучше, кто-нибудь знает хороший обходной путь?
PS: Я бы предпочел НЕ *
- Обезьяна-патч
link-to
или - Напишите мою собственную версию
link_to
, но если это то, что нужно, то это то, что нужно.И я использую jQuery 1.5., Если это поможет.