will_paginate ajax with fade

Я пытаюсь настроить разбиение на страницы will_pagniate в рельсах. Я хочу, чтобы старая страница исчезла, а новая исчезла.

Вот ' s соответствующая часть моего контроллера:

respond_to do |format|
  format.html # new.html.erb
  format.js {
    render :update do |page|
      page.replace 'page', :partial => 'cur_page'
    end
  }
  format.xml  { render :xml => @branch }
end

Вышеупомянутая часть:

<div id="page">
  <%= will_paginate %>
  <div id="posts">
    <%= render @posts %>
  </div>
  <%= will_paginate %>
</div>

И соответствующая часть application.js:

document.observe("dom:loaded", function() {
  // the element in which we will observe all clicks and capture
  // ones originating from pagination links
  var container = $(document.body)

  if (container) {
    var img = new Image
    img.src = '/images/spinner.gif'

    function createSpinner() {
      return new Element('img', { src: img.src, 'class': 'spinner' })
    }

    container.observe('click', function(e) {
      var el = e.element()
      if (el.match('.pagination a')) {
        el.up('.pagination').insert(createSpinner())
        target = $('posts')
        new Effect.fade(target, { duration: 0.3, afterFinish: function()
          {
            new Ajax.Request(el.href,
            {
              method: 'get',
              onSuccess: function(){ new Effect.Appear(target, {duration:0.3})}
            })
        }})
        e.stop()
      }
    })
  }
})

Похоже, что сценарий завершается на этой строке,

        new Effect.fade(target, { duration: 0.3, afterFinish: function()

, потому что я вижу spinner.gif start, затем исчезнет и страница обновится нормально. У меня работал ajax до того, как я попытался добавить Effect.Fade и Effect.Appear.

Это правильный способ сделать это? Должен ли я вместо этого поместить эффекты в контроллер?

5
задан Rob W 28 December 2011 в 13:30
поделиться