yesod如何显示PersistInt64键的纯值

时间:2013-11-08 14:52:18

标签: haskell key yesod persist

Dog
    name Text
    race Text

getAllDogsR :: Handler Html
getAllDogsR = do
    Dogs<- runDB $ selectList [] [Asc DogName]
    defaultLayout
        [whamlet|
            <ul>
                $forall Entity dogid dog <- Dogs
                    <li>
                        #{show $ unKey (dogid)}
       |]

当我运行此代码时,我将获得数据库中所有狗密钥的列表 像这样:

  • PersistInt64 1
  • PersistInt64 2
  • PersistInt64 3
  • PersistInt64 4

但我真正想要的是显示键的纯值 像这样:

  • 1
  • 2
  • 3
  • 4

我的问题是如何实现这一目标。

2 个答案:

答案 0 :(得分:2)

您需要首先从KeyBackend中提取密钥,如下所示:

extractKey :: KeyBackend backend entity -> String
extractKey = extractKey' . unKey
  where extractKey' (PersistInt64 k) = show k
        extractKey' _ = ""

你现在应该能够做到

#{extractKey dogid}

答案 1 :(得分:2)

更改

#{show $ unKey (dogid)}

#{toPathPiece dogid}