ruby - 如何在 Rails 4 应用程序中设置 "application/ld+json"schema.org 元数据

标签 ruby ruby-on-rails-4 metadata schema.org json-ld

我想使用 json ld 设置 schema.org 元数据。例如,以下链接使用 ghost,它具有“application/ld+json”元数据。 http://blog.ghost.org/distributed-team-tools/

我想为我的 Rails 应用实现类似的功能。我应该如何实现它。 有没有什么 gem 可以做这个等等。

谢谢!

最佳答案

有一个 JSON-LD gem ( http://rubygems.org/gems/json-ld ),但它可能不是您要查找的内容。请注意,JSON-LD 的要点在于它只是 JSON,在本例中使用 schema.org 上下文来解释值。假设您的数据在 ActiveRecord 模型中,您将需要一种方法来确保记录属性对应于适当的 schema.org 属性。如果是这种情况,那么只需将您的模型序列化为 JSON (#to_json) 即可完成大部分工作。剩下的就是将 @context@id@type 字段添加到 JSON。

例如,假设您有一个序列化为如下内容的用户模型:

{
  "name": "Harry",
  "email": "Harry@example.org"
}

作为 http://schema.org/Person 的“姓名”和“电子邮件”属性,您可以通过简单地添加一个 @context@type 来达到目的,如下所示:

{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "Harry",
  "email": "Harry@example.org"
}

假设您正在构建一个 RESTful 应用程序,最好为每个对象指定一个 @id,它对应于此人的资源 URL。这可能类似于以下内容:

{
  "@context": "http://schema.org/",
  "@id": "http://example.com/people/harry",
  "@type": "Person",
  "name": "Harry",
  "email": "Harry@example.org"
}

现在,如果您检索 http://example.com/people/harry作为 JSON(或 JSON-LD),您可以取回该表示。

关于 JSON-LD 的另一件事是它用于“关联数据”,因此包括对其他资源的引用对于允许找到它们很有用,就像您可能在 HTML 中所做的那样。 schema.org 文档包含大量示例,说明如何为它们定义的大多数类型生成不同类型的标记,包括 JSON-LD。参见 http://schema.org/Person例如,或 http://schema.org/docs/full.html完整的类型层次结构。

当您想从其他来源(通常是某种 RDF 格式)生成此数据或解释您收到的数据时,JSON-LD gem 会派上用场。您可以在 http://json-ld.org/playground 进行试验.

您还可以像您的示例一样使用带有 type="application/ld+json"的脚本标记将您的 JSON-LD 包含在 HTML 中。如果您想查看数据的外观,可以在 Google 结构化数据测试工具或 http://linter.structured-data.org/ 上对其进行测试。

关于ruby - 如何在 Rails 4 应用程序中设置 "application/ld+json"schema.org 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718929/

相关文章:

ruby - 数组中的最大值和最小值

reactjs - Google 未显示 React-Helmet 标题和描述

ruby - 规范化 HTTP URI

ios - FaSTLane 注释掉字符串中的引号

ruby - ruby 命令行开关 -rubygems & -r 不兼容吗?

javascript - 通过页面导航转到页面时,jQuery UI 自动完成功能不起作用

ruby-on-rails - 如何配置 ActiveJob 以使用 Resque?

ruby-on-rails - Rails 中的 respond_to 和 respond_with 有什么区别?

wpf - 解锁用于 VS2010 的 Ribbon WPF 程序集

c++ - 任何人都可以清楚地了解如何在 C++ 中获取 tiff 评级元数据,或者仅以 Win Explore 读取的方式获取文件评级吗?