スキャフォールディングされたサイトがあり、ホーム ハンドラーでこのコード スニペットを使用しています。
{-# LANGUAGE TupleSections, OverloadedStrings #-}
module Handler.Home where
import Import
import Yesod.Auth
getHomeR :: Handler RepHtml
getHomeR = do
defaultLayout $ do
maid <- maybeAuthId
setTitle "Welcome!"
$(widgetFile "homepage")
maid
私は私のhomepage.hamletファイルにアクセスしたいと思います。ただし、次のエラーが表示されます。
Handler/Home.hs:10:17:
Couldn't match expected type `WidgetT site0 IO t0'
with actual type `HandlerT master0 IO (Maybe (AuthId master0))'
In a stmt of a 'do' block: maid <- maybeAuthId
In the second argument of `($)', namely
`do { maid <- maybeAuthId;
setTitle "Welcome!";
$(widgetFile "homepage") }'
In a stmt of a 'do' block:
defaultLayout
$ do { maid <- maybeAuthId;
setTitle "Welcome!";
$(widgetFile "homepage") }
Homepage.hamlet 内にコンテンツを配置したかどうかに関係なく、上記のエラー メッセージが表示されます。を使用する代わりに $(widgetFile "homepage")
、Yesod Book (Auth セクション) から whamlet コード スニペットを貼り付けると、正常に動作します。
MaybeAuthId への呼び出しを削除すると、問題も解消されます。MaybeAuthId の呼び出しと widgetFile の使用に関係していると推測していますが、問題を解決する方法がわかりません。どんな助けでも感謝します。
ありがとう!