2011-06-01 85 views
1

我正在开发一个应用程序与Rails 3,其中一个requeriments是独特的元描述和每个页面上的关键字,以改善搜索引擎优化。如何在Rails中自动获取元描述和关键字?

客户端需要它自动执行。你怎么做到这一点?最好用Rails,Ruby或直接用Javascript来做到这一点?

谢谢。

回答

5

在Rails中做,而不是通过JavaScript。搜索引擎不会执行您的JavaScript。

我最常做的是写一个元帮手,我只是坚持我的ApplicationHelper,看起来像这样:

def meta(field = nil, list = []) 
    field = field.to_s 
    @meta ||= { 
    'robots' => ['all'], 
    'copyright' => ['My Copyright'], 
    'content-language' => ['en'], 
    'title' => [], 
    'keywords' => [] 
    } 

    if field.present? 
    @meta[field] ||= [] 
    case list.class 
     when Array then 
     @meta[field] += list 
     when String then 
     @meta[field] += [list] 
     else 
     @meta[field] += [list] 
    end 

    case field 
     when 'description' then 
     content = truncate(strip_tags(h(@meta[field].join(', '))), :length => 255) 
     else 
     content = @meta[field].join(', ') 
    end 

    return raw(%(<meta #{att}="#{h(field)}" content="#{h(content)}"/>)) 
    else 
    tags = '' 
    @meta.each do |field, list| 
     tags += meta(field)+"\n" 
    end 
    return tags.rstrip 
    end 
end 

你可以简单地设置你的意见meta标签,通过增加调用元( ) 在里面。所以在articles/show.html.erb你或许会添加到您的视图的顶部:

<% meta(:title, @article.title) %> 

而在你的布局,你加它不带任何参数,所以它会吐出meta标签。

<%= meta %> 

还是有它输出一个单独的标签:

<%= meta(:title) %> 

我敢打赌,你有更多的优雅的解决方案,虽然。但是如果你正在寻找已经在Rails中实现的东西,那么你倒霉了。

+0

谢谢你,我用了一些修改您的解决方案。顺便说一句,我不能使这个作品 '<%= meta %>' – decay 2011-06-01 17:41:37

+0

所以我可以做一些像'<%meta(:description,'我的描述'%>'如果我想添加一个元描述标签? – acconrad 2011-09-16 21:46:52

+0

对于SEO, – 2012-04-29 21:54:52

2

有几个宝石可以解决这个问题。看一看:

+0

这个宝石不会自动生成关键字 – decay 2011-06-01 17:42:46

+0

你可以在它们之上构建 - 解析页面上显示的模型的信息(或者,如果它是一个索引,使用一些通用信息),并使用其中一个Gems来帮助生成标签。 – Jits 2011-06-01 17:44:57

+0

我使用@fx_解决方案,根据您的建议来生成关键字,我更喜欢自己制作,谢谢 – decay 2011-06-01 17:47:33

相关问题