【问题标题】:How to loop through records in "application/ld+json"如何遍历“application/ld+json”中的记录
【发布时间】:2020-01-09 06:29:39
【问题描述】:

我正在尝试创建一个“ItemList”作为 schema.org 结构化数据标记的一部分。对于 itemList,我无法遍历 @posts 以使用 :plain:cdata 以编程方式创建列表。

- content_for(:header) do
  %script{:type => "application/ld+json"}
    :plain
      {
      "@context": "https://schema.org",
      "@graph":
      [
        {
          "@context": "http://schema.org",
          "@type": "ItemList",
          "itemListElement":
          [
            - @posts.each do  |post|
              {
                "@type": "ListItem",
                "position": 1,
                "item":
                  {
                  "@id": "https://example.com/post",
                  "name": "#{post.title}"
                  }
              }
          ]
        }
      ]
    }

有没有人在这方面取得了成功,或者可以提出一个替代方案来填充 itemList?

【问题讨论】:

  • 你可以试试 gem github.com/ruby-rdf/json-ld
  • “不能遍历@posts”是什么意思?你有错误吗?什么都没有输出?我们需要一个更好的“不能”的例子。
  • 视图中没有执行ruby,我估计是因为:plain的使用。我认为您在下面的评论很聪明,您可以在控制器中迭代并存储此操作,然后从视图中访问它。

标签: ruby-on-rails ruby haml json-ld


【解决方案1】:

在视图之外,为您的 JSON 数据创建一个常规的 Ruby 哈希。

那么,你的视图看起来就像

%script{ :type => "application/ld+json" }
  != my_ruby_hash.to_json

【讨论】:

  • 好想法@claasz
  • 似乎将哈希转换为 JSON 应该发生在控制器中。视图应该只渲染。
猜你喜欢
  • 2018-10-06
  • 2021-10-13
  • 2020-04-06
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2017-12-30
相关资源
最近更新 更多