使用链接/引用字段更新Contentful条目

时间:2017-08-23 21:40:33

标签: ruby contentful

Contentful文档很稀疏。我想更新一个条目的字段,该条目是指向另一个条目的链接(“参考”是他们在CMS UI中所称的那个)。

使用Contentful Management API时,是否有人知道他们想要的格式?

type  ||= @mgmt.content_types.find(
  ENV['CONTENTFUL_SPACE_ID'], 'comments'
)

entry = type.entries.create(
  title: params[:title],
  article: params[:article]
)

其中:article是条目ID作为字符串。这将返回:

undefined method `id' for "7L4IpEtsdffds8EsmoWMGIgy":String
Extracted source (around line #74):

#72         case field.type
#73         when ContentType::LINK then
*74           { sys: { type: field.type, linkType: field.link_type, id: attribute.id } } if attribute
#75         when ContentType::ARRAY then
#76           parse_fields_array(attribute)
#77         when ContentType::LOCATION then

我还尝试将params[:article]替换为@client.entry(params[:article]),认为他们可能想要整个对象,但只返回相同的错误,只会看到与空字符串相同的参数。

我也在@ DavidLitvak的建议中尝试过这个:

link = Contentful::Management::Link.new({
  sys: {
    type: 'Link',
    linkType: 'Entry',
    id: params[:article]
  }
})

entry = type.entries.create(
  title: params[:title],
  article: link
)

虽然这不会引发错误,但在填充标题字段时,文章字段会显示没有条目。

另请注意,我使用的是Ruby gem:contentful-management

1 个答案:

答案 0 :(得分:1)

您需要发送的内容是引用文章的Link

您可以这样做:

entry = type.entries.create(
  title: params[:title],
  article: Contentful::Management::Link.new({
    sys: {
      id: params[:article],
      type: 'Link',
      linkType: 'Entry'
    }
  })
)

您可以在此处找到有关链接如何工作的更多信息:https://www.contentful.com/developers/docs/concepts/links/