如何在yesod中从PersistObjectId获取String?

时间:2012-03-23 06:13:50

标签: haskell yesod persist

从更高层次我想要做的是通过包含对象ID的javascript发布帖子。

我正在通过' PlayerId'到一个小部件,它将创建将发布的jquery。

  tableClickHandlerWidget :: String -> TableId -> PlayerId -> Maybe Int ->  Widget
  tableClickHandlerWidget elemId tid playerId seatId = do
    let seatNumber = if seatId == Nothing
                      then "null"
                      else show  $ fromJust seatId
    let pid = fromPersistToJS $ unKey playerId
    toWidget[julius|
        $(function() {
          $('#{show elemId}').click.post(
            '@{GamingSessionsR}',
            { player: '#{pid}', table: '#{show tid}', seat:'#{seatNumber}' },
            );
        });
        |]
    toWidget[hamlet|something<br/>|]


  fromPersistToJS :: PersistValue -> String
  fromPersistToJS p = do
   let (a) = fromPersistValue p
   case a of
      Left  l -> T.unpack l
      Right  r -> r

我从thePersistToJS获得的内容始终是一个例外,即对象id不能成为字符串。

但是URL本质上是字符串并且在其中包含ID;所以我相信这一定是可行的。

https://github.com/gdoteof/exodus/是整个回购,我正在

发表这篇文章

https://github.com/gdoteof/exodus/commit/4daa0a25a9f44c69cbdc5c0bb4e8aa4f6433de45

1 个答案:

答案 0 :(得分:4)

答案非常简单。

let playerIdAsText = toPathPiece playerId