Я создаю агрегатор ссылок, где люди могут отправлять статьи.Используйте одно поле формы для двух записей модели в Yesod
Моя модель данных содержит
Article
title Text
url Text
domain Text
Я хотел бы пользователю ввести URL-адрес в форму, а затем я запускаю функцию на URL, чтобы извлечь домен, а затем сохранить как в базе данных. Я хотел бы пользователю нужно только ввести URL один раз, как в:
entryForm = renderDivs $ Article¬
<$> areq textField "Url" Nothing¬
<*> areq textField "Title" Nothing¬
Но я получаю эту ошибку
Couldn't match type ‘Text -> Article’ with ‘Article’
Expected type: Form Article
Actual type: blaze-markup-0.7.0.0:Text.Blaze.Internal.Markup
-> MForm
(HandlerT App IO)
(FormResult (Text -> Article),
WidgetT (HandlerSite (HandlerT App IO)) IO())
In the expression:
renderDivs
$ Article <$> areq textField "Url" Nothing
<*> areq textField "Title" Nothing
In an equation for ‘entryForm’:
entryForm
= renderDivs
$ Article <$> areq textField "Url" Nothing
<*> areq textField "Title" Nothing
, потому что ясно форма не соответствует тип статьи.
Я не уверен, как действовать. Мне сказали, что я могу либо a) написать альтернативный тип данных статьи и конвертировать между ними, либо b) создать свое собственное пользовательское поле, хотя оба из них кажутся мне трудными как новичок.