JQuery для рубина на рельсах - PullRequest
0 голосов
/ 21 апреля 2010

Я пытаюсь использовать этот код http://gist.github.com/110410 для выгрузки Prototype в пользу jQuery, но у меня есть проблема.

Это мой HTML (ссылка, сгенерированная ссылкой):

<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', 'Mi6RcR6YDyvg2uNwGrpbeIJutSHa2fYboU37wSDE7AU='); f.appendChild(s);f.submit();return false;" class="post add_to_cart " href="/line_items?product_id=547">Add to cart</a>

Проблема:

Все работает как надо, за исключением того, что страница перезагружается.Я подозреваю, что отправка проходит, что вызывает перезагрузку страницы.

Есть ли элегантный способ предотвратить это?вернуть ложь;в данном случае, похоже, не сокращается.

1 Ответ

0 голосов
/ 21 апреля 2010

РЭБ. Используйте это (jQuery):

<a class="post add_to_cart" rel="Mi6RcR6YDyvg2uNwGrpbeIJutSHa2fYboU37wSDE7AU=" href="/line_items?product_id=547">Add to cart</a>
<script>
    $("a.add_to_cart").click(function(){
        $.post(this.href,{'authenticity_token':$(this).attr("rel")});
        return false;
    });
</script>

Я поместил токен аутентификации в rel attr для якоря, предполагая, что токен уникален для продукта.


UPDATE

Потому что, по-видимому, Rails вообще ничего не контролирует:

<a class="post add_to_cart" href="/line_items?product_id=547" onclick='            $.post(this.href,{"authenticity_token":"Mi6RcR6YDyvg2uNwGrpbeIJutSHa2fYboU37wSDE7AU="});return false;'>Add to cart</a>
...