我在稍微改变的Yesod脚手架上遇到了麻烦。我在/config/models 中这样描述我的实体:
Artist
ident Int
value Text
这是我在/Handler/Artist.hs 的处理程序
{-# LANGUAGE QuasiQuotes, TypeFamilies, GeneralizedNewtypeDeriving, TemplateHaskell,
OverloadedStrings, GADTs, FlexibleContexts #-}
module Handler.Artist where
import Import
import qualified Control.Monad.IO.Class as M
import Text.Hamlet (shamlet)
import Text.Blaze.Html.Renderer.String (renderHtml)
import Database.Persist
import Database.Persist.Sqlite
import Database.Persist.TH
import Control.Monad.IO.Class (liftIO)
getArtistR = concatMap (renderListElement . value) $ artists
where artists = selectList ([] :: [Filter Artist]) []
renderListElement name = renderHtml [shamlet|<li>#{name}|]
(我包含在冗余:))
最后,我的错误:
Rebuilding application... (using cabal)
Handler/Artist.hs:14:45: Not in scope: `value'
Build failure, pausing...
我不知道我应该怎么做!我是否需要在处理程序中放入类似$(widgetFile "artist")
的东西?补丁哪里出了问题?任何帮助都会很棒。提前谢谢你!!
您应该在函数前面加上模型名称,这样value
就变成了artistValue
。
文档包含生成的代码的示例。