2017-03-07 9 views
1

ページをリロードせずにJavascriptを動作させるのは苦労しています。私は問題がターボリンクと関係していると信じています。Rails 5はJSをターボリンクでロードします

私はその後、私はページをリロードが、ときに私際にすべてが完璧に動作します。この

function addCart(event, id){ 
    event.preventDefault(); 
    var quantity = $("#"+id+'_product_quantity').val() 
    $.post('/cart/add', { 
    product_id: id, 
    quantity: quantity 
    }, function(data, status, xhr){ 
    if(xhr.status !== 200){ 
     alert("There was an error. Please try again") 
    }else { 
     $("#"+id+'_product_submit').val("Added"); 
    } 
    }) 
} 

のようにAJAXを経由してフォームを送信しています。この

<%= form_for @cart, url: cart_path, html: {onsubmit: "addCart(event, #{@product.id})"} do |c| %> 

のようなフォームにonSubmit検証のリスナーを設定していますjavascriptが呼び出されないリンクを介してページに移動します。奇妙なことは、event.preventDefault()が機能していることです。私がjavascriptを完全に削除すると、フォームは通常のHTMLフォームのように送信されます。私はjqueryにかなり新しく、javascriptを読み込む方法を理解できません。

+0

jQueryの 'document.ready(...)'コールバックを使用していますか? – Mark

+0

いいえ私はそうではありません。 $( "#id")。submit()構文でリスナーをアタッチする場合にのみ必要な印象を受けました。 –

答えて

2

これはターボの問題である可能性があります。あなたのjavascriptファイルでは、

+0

そのイベントはトリガーされていますが、それでも動作していません。私は問題がリスナーをどのように付けているのかと関係していると思います –

+0

ブラウザのログに何かが表示されますか? – Mark

+0

いいえ、何もありませんでした –

0

とJavaScriptコードを囲みます。これはターボリンクと関係があります。私はそれが//= require turbolinks行をassets/javascripts/application.jsファイルから削除したので、それがターボリンクで動作させる方法を理解できませんでした。

関連する問題