在Rails 5中为每个显示页面从数据库添加不同的元标记

时间:2019-02-17 20:31:05

标签: ruby-on-rails ruby-on-rails-5

我在数据库中有事件记录,每个事件记录都有一个“ meta_keywords”字段。

当我显示一个事件时,我想在页面中生成一个meta标签,以便事件显示页面可以被搜索引擎引用。

预期:

<meta name="description" content="My great event">
<meta name="keywords" content="Event topics">

如何在Rails 5中做到这一点?

1 个答案:

答案 0 :(得分:0)

在这里找到了答案,并提供了详细的步骤: https://nithinbekal.com/posts/rails-page-titles/

module ApplicationHelper
  def meta_tag(tag, text)
    content_for :"meta_#{tag}", text
  end

  def yield_meta_tag(tag, default_text='')
    content_for?(:"meta_#{tag}") ? content_for(:"meta_#{tag}") : default_text
  end
end

在layouts / application.html.erb的开头部分:

<meta name='description'
  content='<%= yield_meta_tag(:description, 'Default description') %>' />
<meta name='keywords'
  content='<%= yield_meta_tag(:keywords, 'defaults,ruby,rails') %>' />

在帖子中#show:

<% meta_tag :description, @post.description %>
<% meta_tag :keywords, @post.keywords.join(',') %>