2010-04-21 3 views
0

Я использую этот код http://gist.github.com/110410, чтобы скомпоновать прототип в пользу jQuery, но у меня есть проблема.jquery for ruby ​​on rails

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

<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> 

Издание:

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

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

ответ

0

ew. Используйте этот (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> 

Я поставил маркер подлинности в отн 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> 
+0

вся OnClick часть генерируется с помощью помощника рельсы, так что я не должен сильно контроль над этим также, я хочу сохранить его для браузеров, не поддерживающих javascript. есть ли способ перехватить этот submit без изменения моего html-кода? – Cezar

+0

Я понятия не имел, что рельсы сосали так плохо. –

+0

Вы хотите сохранить, что для браузеров, не относящихся к javascript? javascript? это не имеет смысла. –