Обратные вызовы Ajax не работают с Rails 3.0.5 и jQuery 1.5.1 - PullRequest
1 голос
/ 02 марта 2011

У меня есть ajax-нумерация, работающая с Kaminari gem на моем веб-сайте, но у меня возникают трудности с работой обратных вызовов ajax

Я использую jquery-1.5.1, rails 3.0.5 и у меня последний файл rails.js

Мой podcasts.html.haml выглядит следующим образом

#paginator
  = paginate @podcasts, :remote => true

#podcasts
  = render @podcasts

Мой файл index.js.erb выглядит так:

$('#podcasts').html('<%= escape_javascript render(@podcasts) %>');
$('#paginator').html('<%= escape_javascript(paginate(@podcasts, :remote => true).to_s) %>');

Нумерация страниц хорошо работает, и страницы действительно загружаются через ajax, но я хочу сделать несколько обратных вызовов ajax, и я просто не могу понять, как заставить это работать.

Я пытался добавить многочисленные варианты следующего кода в мой файл application.js, но безуспешно:

$('#paginator a').bind('ajax:success', function(data, status, xhr) {alert("success!");})

Я ожидаю, что приведенный выше код сработает, как только завершится работа с Ajax. Ничего не происходит, хотя.

У кого-нибудь есть идеи?

PS

Метод paginate, описанный выше, взят из Kaminari gem и создает следующий html:

<div id="paginator">
  <nav class="pagination">
    <a href="/podcasts" data-remote="true">Page 1</a>
    <a href="/podcasts?page=2" data-remote="true">Page 2</a>
    <a href="/podcasts?page=3" data-remote="true">Page 3</a>
  </nav>
</div>

1 Ответ

1 голос
/ 03 марта 2011

Я не смог точно следовать вашему коду, но я сделал простой тест (jquery 1.5.1, rails 3.0.5), и он работает для меня:

ajax_controller.rb

class AjaxController < ApplicationController
  def get_data
    respond_to do |format|
      format.js { sleep 1; render :json => "ajax value" }
    end
  end
end

index.html.erb

<%= link_to "get_data", get_data_path, :remote => true, :id => 'request' %>

<div id="response">
</div>

<%= javascript_tag do %>
    $("#response").html("default value");

    $("#request").bind("ajax:success", function(e, data, status, xhr) {
        $("#response").html(data);
    });
<% end %>

routes.rb

    get "ajax/index"
    get "ajax/get_data", :as => "get_data"

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...