开发者

How to get automatically meta description and keywords in Rails?

I am developing an application with Rails 3, one of requeriments is unique meta descriptions and keywords on each page to improve the SEO.

The 开发者_如何转开发client needs that this do automatically. How do you do this? Is better do this with Rails, Ruby or directly with Javascript?

Thanks.


Do it in Rails, not via javascript. Search Engines will not execute your javascript.

What I usually do is write a meta helper that I simply stick in my ApplicationHelper, that looks like this:

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

You can simply set meta tags in your views, by adding a call to meta() in it. So in an articles/show.html.erb you might add this to the top of your view:

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

And in your layouts, you add it without any parameters, so it'll spit out the meta tags.

<%= meta %>

Or have it output an individual tag:

<%= meta(:title) %>

I bet you there's more elegant solutions, though. But if you were looking for something already implemented in Rails you're out of luck.


There are a number of Gems that address this issue. Take a look at:

  • meta-tags
  • seo_meta
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜