当前位置:  开发笔记 > 编程语言 > 正文

让will_paginate使用Ajax的最好方法

如何解决《让will_paginate使用Ajax的最好方法》经验,为你挑选了2个好方法。

如果你谷歌"will_paginate"和"ajax",最好的结果是这篇博文:但是will_paginate的原作者说不使用这种方法(对SEO /蜘蛛不好)......

但是我无法让原作者方法起作用(他的javascript会杀死我所有的链接).另一位绅士建议采用与mislav(原始的will_paginate作者)概念类似的方法.但我不能让对任何工作.

所以.... 使用AJAX分页的最佳方法什么,并保持SEO友好?(对于RAILS> 2.1)



1> Ian Terrell..:

汤姆的回答是正确的.只是为了摆动,我做了一个快速实现的原型. 这是一个截屏视频,在启用Javascript(您的用户)时使用Ajax显示它,并且在禁用Javascript时仍然使用漂亮的URL(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:

Listing items

<%= render :partial => "items" %>

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

<%= will_paginate @items %>


  <% for item in @items %>
    
  <% end %>
<%= item.id %>

布局:

<%= 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),但它也很容易使用Prototype.


+1"for shiggles" - 您每天都可以学习新的术语.哦,也很好的答案

2> TomHastjarja..:

Seo友好且不引人注目的javascript齐头并进.你能做的是以下几点.

对整个网站进行编码,好像只启用了html(包括你的分页内容)

如果请求来自js,请使用respond_to并仅提供项目列表

从您选择的任何库中使用onDomReady,您尝试捕获所有分页链接并添加onclick事件,该事件触发对该新视图的ajax调用并返回结果.您将该结果放入包含要分页的数据的容器中.然后onclick返回false.

为了给用户提供更好的用户体验,您可以在同一个javascript方法中添加一些功能,如活动链接等.

使用这种方法,分页将适用于JS和非js,因为非js用户(包括Googlebot)将正常遍历您的分页.只有在用户启用了javascript的情况下,才会使用新结果更新包含数据的容器.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有