【发布时间】:2014-06-13 01:33:51
【问题描述】:
我有一个简单的一对多关系,这样说
Process
name Text
Report
time Text
process ProcessId
我想创建一个用于创建帖子的表单,我可以在其中从现有用户列表中进行选择。像这样的。
processOptions :: Handler (OptionList (KeyBackend SqlBackend Process))
processOptions = optionsPersist [] [Desc ProcessName] id
postForm = renderDivs $ Report
<$> areq textField "Time" Nothing
<*> areq (selectField processOptions) "Process" Nothing
问题是,我无法弄清楚如何正确使用selectField 和optionsPersist。我查看了源代码以获取线索,但我就是不知道如何处理它。
optionsPersist 的预期类型似乎是 Handler (OptionList (KeyBackend SqlBackend Process)),尽管它实际返回的是 Handler (OptionList (Entity Process))。我不确定我是否遗漏了什么,或者是否需要进行一些解包。
这是实际的错误信息
Couldn't match type ‘Entity (ProcessGeneric SqlBackend)’
with ‘KeyBackend SqlBackend Process’
Expected type: Handler (OptionList (KeyBackend SqlBackend Process))
Actual type: HandlerT
App IO (OptionList (Entity (ProcessGeneric SqlBackend)))
is a question for a similar topic,我不认为这是重复的,因为这个问题是关于使用optionsPersist,而另一个问题只是手动生成选项。
【问题讨论】:
标签: haskell yesod persistent yesod-forms