Как автоматически получать мета-описание и ключевые слова в Rails?

#javascript #ruby #ruby-on-rails-3

#javascript #ruby #ruby-on-rails-3

Вопрос:

Я разрабатываю приложение с Rails 3, одним из требований являются уникальные мета-описания и ключевые слова на каждой странице для улучшения SEO.

Клиенту необходимо, чтобы это делалось автоматически. Как вы это делаете? Лучше сделать это с помощью Rails, Ruby или напрямую с помощью Javascript?

Спасибо.

Ответ №1:

Делайте это в 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(:title) %>
  

Готов поспорить, что есть более элегантные решения. Но если вы искали что-то уже реализованное в Rails, вам не повезло.

Комментарии:

1. Спасибо, я использую ваше решение с некоторыми изменениями. Кстати, я не могу заставить это работать <%= meta %>

2. Итак, я мог бы сделать что-то вроде <% meta(:description, 'My description' %> , если бы я хотел добавить тег meta description?

3. Для SEO тег description является наиболее важным.

Ответ №2:

Существует ряд драгоценных камней, которые решают эту проблему. Взгляните на:

Комментарии:

1. Эти драгоценные камни не создают ключевые слова автоматически.

2. Вы можете построить поверх них — проанализировать информацию из моделей, отображаемых на странице (или, если это индекс, использовать некоторую общую информацию) и использовать один из этих драгоценных камней, чтобы помочь сгенерировать теги.

3. Я использую решение @fx_ с вашими советами для генерации ключевых слов. Я предпочитаю создавать сам. Спасибо.