ActionView、Application.html.erb 和 HTML 头标签

问题描述 投票:0回答:2

我有一个关于 Ruby on Rails、ActionView、Application.html.erb 和 HTML head 标签的使用的简单问题。

我知道 application.html.erb 用于在您网站上的所有页面上显示内容。

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="My desciprtion.">
  <meta name="robots" content="index,follow">
  <title><%= @title %></title>
    <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true, :cache => "cache/all" %>
    <%= javascript_include_tag "application", :async => true, "data-turbolinks-track" => true, :cache => "cache/all" %>
    <%= csrf_meta_tags %>
</head>

这意味着,上面的代码会显示在我的所有网页上。

现在,我一直在阅读有关 SEO 的内容,它建议为每个网页使用单独的描述元标记,以告诉搜索引擎页面的内容。我要问你的问题是

您是否可以在 Rails 中自定义各个页面,例如

page1.html.erb
page2.html.erb
page3.html.erb

并在其中包含 HTML head 标签?

我使用 Ruby on Rails 已经有一段时间了,但我从未在视图页面中见过 head 标签。

我还没有看到身体标签。

我用过

<% @title = "Page Title" %>

声明页面的单独标题。这相当于 HTML 标题标签。

是否有类似的东西来声明每个网页的描述?

ruby-on-rails ruby meta-tags actionview
2个回答
6
投票

您可以将标题更改为:

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <%= yield :meta %>
  <meta name="robots" content="index,follow">
  <title><%= yield :title %></title>
    <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true, :cache => "cache/all" %>
    <%= javascript_include_tag "application", :async => true, "data-turbolinks-track" => true, :cache => "cache/all" %>
    <%= csrf_meta_tags %>
</head>

那么在你看来你可以这样做:

<% content_for :meta do %>
  <meta name="description" content="blah">
<% end %>

<% content_for :title, 'My title' %>

0
投票

你可以使用元标签宝石:

<head>
  ...
  <%= display_meta_tags %>
</head>

举一些例子:

set_meta_tags site: 'Site Title', title: 'Member Login'
# <title>Site Title | Page Title</title>

set_meta_tags description: "All text about keywords, other keywords"
# <meta name="description" content="All text about keywords, other keywords" />

set_meta_tags canonical: "http://yoursite.com/canonical/url"
# <link rel="canonical" href="http://yoursite.com/canonical/url" />

set_meta_tags :twitter => {
  :card => "summary",
  :site => "@username"
}
# <meta name="twitter:card" content="summary"/>
# <meta name="twitter:site" content="@username"/>

set_meta_tags :author => "Dmytro Shteflyuk"
# <meta name="author" content="Dmytro Shteflyuk"/>
© www.soinside.com 2019 - 2024. All rights reserved.