2017-02-26 3 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} 
     |] 

ich diesen Fehler Referenz findenYesod Hamlet getHomeR nicht

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

, während ich in Modelle definiert haben:

Vocabulary json 
    word Text 
    date UTCTime 
    deriving Show 

PS: Ich entwickle basierend auf dem yesod Gerüst Beispiel: jaod-postgres

Antwort

2

Es sollte vocabularyDate statt nur date sein. Nach dem anhaltenden Abschnitt auf den yesod book,

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

Willen erzeugt Code, der wie

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

Wie Sie durch die Datennamen (personName statt name) voran sehen sind, die Feldnamen sucht . Dies ist eine Standardmethode in Haskell, um Namenskollisionen zu vermeiden.

+0

Kann ich wissen, welcher Teil von yesod Buch das erklärt? – osager

+0

Es ist im Yesod Buch. siehe Aktualisierung. – mb14