【发布时间】:2015-04-08 23:00:04
【问题描述】:
我正在制作一个链接聚合器,人们可以在其中提交文章。
我的数据模型包含
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) 创建我自己的自定义字段,尽管这两个对于新手来说似乎都很难。
【问题讨论】: