Eti*_*nne 8 ajax ruby-on-rails
如果你谷歌"will_paginate"和"ajax",最好的结果是这篇博文:但是will_paginate的原作者说不使用这种方法(对SEO /蜘蛛不好)......
但是我无法让原作者方法起作用(他的javascript会杀死我所有的链接).另一位绅士建议采用与mislav(原始的will_paginate作者)概念类似的方法.但我不能让这对任何工作.
所以.... 使用AJAX分页的最佳方法是什么,并保持SEO友好?(对于RAILS> 2.1)
Ian*_*ell 15
汤姆的回答是正确的.只是为了摆动,我做了一个快速实现的原型. 这是一个截屏视频,在启用Javascript(您的用户)时使用Ajax显示它,并且在禁用Javascript时仍然使用漂亮的URL(Google).这里有一些代码片段可以帮助您实现它.
config/routes.rb:
map.connect 'items/:page', :controller => "items", :action => "index", :page => 1
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
app/views/items/index.html.erb:
<h1>Listing items</h1>
<div id="items">
<%= render :partial => "items" %>
</div>
Run Code Online (Sandbox Code Playgroud)
app/views/items/_items.html.erb:
<%= will_paginate @items %>
<table>
<% for item in @items %>
<tr>
<td><%= item.id %></td>
</tr>
<% end %>
</table>
Run Code Online (Sandbox Code Playgroud)
布局:
<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)
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;
});
}
Run Code Online (Sandbox Code Playgroud)
我的例子使用jQuery(使用jRails),但它也很容易使用Prototype.
Seo友好且不引人注目的javascript齐头并进.你能做的是以下几点.
使用这种方法,分页将适用于JS和非js,因为非js用户(包括Googlebot)将正常遍历您的分页.只有在用户启用了javascript的情况下,才会使用新结果更新包含数据的容器.
小智 1
不幸的是,我认为您不能以您想要的方式使用 Ajax,并且就分页内容而言仍然保持 SEO 友好。问题是,据我所知,Google 和朋友的机器人不会使用 XHR 请求浏览您的内容,因此他们根本看不到该内容。
也就是说,如果每个分页项目都有自己的静态、SEO 友好的页面(或者在您的网站上以其他方式静态可用),则内容仍然会找到进入其引擎的方式。这可能是您想要走的路。