Лучший способ получить will_paginate, работающий с Ajax

Драйвер объединит значения предложений фильтра в вашем случае

import org.mongodb.scala.bson.{BsonDocument, codecs}
import org.mongodb.scala.model.Filters._

object Try extends App {
  var f = and(gt("foo", "A"), lt("foo", "Z"))
  println(f.toBsonDocument(classOf[BsonDocument], codecs.DEFAULT_CODEC_REGISTRY))
}

// output
// {"foo": {"$gt": "A", "$lt": "Z"}}
8
задан Scott 20 February 2009 в 00:26
поделиться

3 ответа

Ответ Tomh корректен. Только для shiggles, я моделировал быструю реализацию. Вот скринкаст, который показывает его с помощью Ajax, когда JavaScript включен (пользователи) и все еще наличие довольно URL, когда JavaScript отключен (Google). И вот несколько фрагментов кода для получения Вас прокручивающийся на нем.

config/routes.rb:

map.connect 'items/:page', :controller => "items", :action => "index", :page => 1

app/controllers/items_controller.rb:

class ItemsController < ApplicationController
  def index
    @items = Item.paginate(:all, :page => params[:page])

    respond_to do |format|
      format.html
      format.js do
        render :update do |page|
          page.replace_html :items, :partial => "items"
          page << "ajaxifyPagination();"
        end
      end
    end
  end
end

app/views/items/index.html.erb:

<h1>Listing items</h1>

<div id="items">
  <%= render :partial => "items" %>
</div>

app/views/items/_items.html.erb:

<%= will_paginate @items %>

<table>
  <% for item in @items %>
    <tr>
      <td><%= item.id %></td>
    </tr>
  <% end %>
</table>

расположение:

<%= javascript_include_tag :defaults %>

public/javascripts/application.js:

$(document).ready(function() {
    ajaxifyPagination();
});

function ajaxifyPagination() {
    $(".pagination a").click(function() {
        $.ajax({
          type: "GET",
          url: $(this).attr("href"),
          dataType: "script"
        });
        return false;
    });
}

Мой пример использует jQuery (с jRails), но это просто, чтобы сделать с Прототипом также.

15
ответ дан 5 December 2019 в 07:13
поделиться

SEO дружественный и незаметный JavaScript идет рука об руку. То, что можно сделать, следующее.

  • Кодируйте весь сайт, как будто только HTML включен (incl Ваша вещь разбиения на страницы)
  • Используйте respond_to и вручите только список объектов, если запрос входит от js
  • Используя onDomReady из любой библиотеки Вы выбираете Вас, пытаются поймать все ссылки разбиения на страницы и добавить onclick событие, которое инициировало вызов ajax к тому новому представлению и возвращает результат. Вы помещаете тот результат в контейнер, содержащий данные, которые Вы нумеруете страницы. onclick затем возвращает false.
  • Чтобы дать Вашим пользователям лучший пользовательский опыт, можно добавить некоторые опции как активные каналы и т.д. к тому же методу JavaScript.

Используя этот подход разбиение на страницы будет работать на JS и non-js, поскольку non-js пользователи (включая Googlebot) пересекут Ваше разбиение на страницы как нормальное. Только, если пользователю включили JavaScript, контейнер с данными будет обновлен с новыми результатами.

7
ответ дан 5 December 2019 в 07:13
поделиться

К сожалению, я не думаю, что можно использовать Ajax в способе, которым Вы хотите и все еще остаетесь SEO, дружественная до нумеровавшего страницы содержания. Проблема состоит в том, что роботы Google и друзей, насколько я знаю, не пройдут Ваше содержание с помощью запросов XHR, таким образом, они просто не будут видеть то содержание.

Тем не менее, если нумеровавшие страницы объекты у каждого будут их собственные статические, благоприятные для SEO страницы (или иначе статически доступны на Вашем сайте), то содержание все еще найдет свой путь в их механизмы. Это - путь, которым Вы, вероятно, захотите пойти.

1
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: