Обновление Contentful записи со ссылкой / полем ссылки
Содержательная документация довольно скудна. Я хочу обновить поле в записи, которая является ссылкой на другую запись ("Ссылка" - это то, что они называют в пользовательском интерфейсе CMS).
Кто-нибудь знает, в каком формате они хотят это при использовании Contentful Management API?
type ||= @mgmt.content_types.find(
ENV['CONTENTFUL_SPACE_ID'], 'comments'
)
entry = type.entries.create(
title: params[:title],
article: params[:article]
)
куда :article
идентификатор записи в виде строки. Это возвращает:
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: contentful-management
,
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/