0

jQuery を使用する Rails 3.2 アプリでスピナーを表示できません。

site/assets/javascripts/application.js と入力すると、以下のコードが表示されるので、ロード中であることがわかります。

フィードバックで更新 - 私の assets/javascripts/site.js:

$(document).ready(function() {
  $("#change_item").change(function() {
    $("#spinner").show();
    var item_id = $(this).val();
    var url = "/system/" + item_id + "/change_item/";
    $.post(url, item_id, function(html) {
    $("#spinner").hide();
    window.location.reload(true);
    });
  });
});

プルダウン メニュー:

<%= select_tag "current_item", options_from_collection_for_select(current_user.accessible_items, "id", "name", session[:item]), :id=>"change_item" %>

私のレイアウトファイルでは:

    <div id = "spinner" style = "display:none;"><%= image_tag "spinner.gif" %></div>

自分が行っていることを多数の Google の結果と比較しましたが、何が間違っているのかを判断するのに苦労しています。

ありがとう。

4

2 に答える 2

2

こんにちはジェイあなたのコードでは、jQuery.post()jQuery.ajaxを組み合わせて使用​​しています。最初のものは実際には他のものの省略形であるため、1 つだけを使用する必要があります。

コードは次のようになります。

  $.post(url, item_id, function(html) {
    window.location.reload(true);
    $("#spinner").hide();
  });

3 番目の引数は、ajax 呼び出しのコールバックです。

実際には、これらの操作を単純化する非常に簡単な方法であるujsを使用してこのコードを短縮することもできますが、これは実際のコードによって異なります。目立たないように他のページへのリンクがある場合は特に便利です。

--

コメントの後に更新します-「機能していない部分は $("#spinner").show() です」: 私にとって、これは完璧に機能します:

<%= select_tag "current_item", options_from_collection_for_select(User.all, 'id', 'name'), :id=>"change_item" %>

$(document).ready(function() {
  $("#change_item").change(function() {
    $("#spinner").show();
    // any code after this line should not affect the #spinner.show()
  });
});
于 2013-06-09T13:11:50.300 に答える