こんにちは、nishi_talk(@nishi_talk)です。
今回はrailsのmeta-tagsの設定方法とSEO対策をした方法をご紹介します。
設定したときの環境
ruby 2.2.8
Rails 5.1.6
インストール
まずはGemfileに以下の記述してパッケージをインストールします。
# メタタグ機能 gem 'meta-tags'
bundle install
meta-tagsの設定
/config/locales/ja.ymlにサイトやアプリケーションのデフォルトの設定を記述します。
meta_tags: base: site: サイトのタイトル description: サイトのディスクリプション keywords: - キーワード1 - キーワード2
/app/controllers/concernsに以下の新規ファイル作成します。
今回は例としてmeta_taggable.rbという名前で作成します。
meta_taggable.rbに以下の記述を追加します。
module MetaTaggable extend ActiveSupport::Concern include ActionView::Helpers::AssetUrlHelper included do before_action :prepare_meta_tags end private def prepare_meta_tags(options = {}) base = t('meta_tags.base') site = base[:site] description = base[:description] title = t("meta_tags.titles.#{controller_name}.#{action_name}", default: '') image = image_url('ogp.png') image = options[:image].presence || image_url('ogp.png') defaults = { site: site, title: title, description: description, keywords: base[:keywords], canonical: request.url, og: { url: request.url, title: title.presence || site, description: description, site_name: site, type: 'article', image: image }, twitter: { card: 'summary', site: '@ツイッターのアカウント名', title: title.presence || site, description: description, image: image } } options.reverse_merge!(defaults) set_meta_tags(options) end end
/app/controllers/application_controller.rbに以下の記述を追加します。
class ApplicationController < ActionController::Base protect_from_forgery with: :exception include MetaTaggable end
metaタグの出力
/app/views/layouts/application.html.erbに以下の記述を追加します。
<%= display_meta_tags reverse: true %>