2017-02-26 82 views
0
getHomeR :: Handler Html 
getHomeR = do 
    wordList <- runDB $ selectList [] [] :: HandlerT App IO [Entity Vocabulary] 
    defaultLayout 
     [whamlet| 
      <ul> 
       $forall Entity wordid wordItem <- wordList 
        <li> 
         <a [email protected]{HomeR}>#{date wordItem} 
     |] 

我得到这个错误耶索德哈姆雷特getHomeR找不到引用

Variable not in scope: date :: Vocabulary -> a0 

,而我在模型中定义:

Vocabulary json 
    word Text 
    date UTCTime 
    deriving Show 

PS:我基础上,耶索德脚手架发展例如:yesod-postgres

回答

2

它应该是vocabularyDate而不是date。 据有关yesod book持久部分,

mkPersist sqlSettings [persistLowerCase| 
Person 
    name String 
    age Int 
    deriving Show 
|] 

将生成代码,它看起来像

data Person = Person 
    { personName :: !String 
    , personAge :: !Int 
    } 
    deriving Show 
... 

正如你所看到的,字段名由数据名称前缀(personName,而不是name) 。这是Haskell避免名称冲突的标准做法。

+0

我可以知道yesod书的哪一部分解释了这一点吗? – osager

+0

这是在yesod书。请参阅更新。 – mb14