我正在使用Yesod脚手架网站(yesod 1.1.9.2),昨天我花了几个小时把我的头围绕在Fay和Yesod的基本用法上。我想我现在理解了使用Fay向页面添加部分AJAX功能的工作流程(我在这里会有点迂腐,因为其他人可能会发现这一步的有用):
Example a添加到SharedTypes.Command。case readFromFay Command of ...中的Handler.Fay.onCommand中,添加一个与我的新数据构造函数匹配的大小写。call (Example "foo") $ myFayCallback。$(fayFile' (ConE 'ScriptR) "Example.hs")。我的问题:在当前的Yesod/Fay体系结构中,我应该如何与Fay代码共享我的持久性模型类型?
在Fay文件中使用import Model不起作用--当我试图加载使用这个Fay文件的页面时,我在浏览器中得到一个错误(我猜Fay的提醒我注意错误的标准方式),表明它找不到模块'Model‘,但是它只搜索了以下目录:
我还尝试在SharedTypes.hs中导入和再导出模型,但这也产生了同样的错误。
有办法这样做吗?若否,原因为何?(我在Haskell和Yesod都是一个相对的菜鸟,所以为什么不呢?)问题会很有帮助。)
编辑:
我刚刚意识到,在这个问题的标题中提到持续性可能会产生误导。为了更清楚地了解我想要做的事情:我只希望能够使用Yesod为我的模型定义的相同的数据类型在我的Fay代码中表示数据。如果我在配置/模型中定义一个模型..。
Foo
bar BarId
textThatCanBeNull Text Maybe
deriving Show..。我希望能够定义一个AJAX‘命令’,它接收和/或返回一个Foo类型的值,并在Foo中处理Fay代码,而不必编写任何反序列化代码。我知道我无法直接从Fay代码中使用Persistent的任何查询功能;我只在标题中提到持久性,因为我将Model.hs和配置/模型中的所有内容都与持久性联系在一起。
发布于 2013-03-31 06:33:11
目前不支持这一点;持久性利用了Fay不支持的许多特性(例如,模板Haskell)。目前,有一个由Fay和Yesod共享的中间数据类型并将您的持久数据转换为/从该类型可能是有意义的。
https://stackoverflow.com/questions/15708400
复制相似问题