Actualmente estoy experimentando con Yesod siguiendo el tutorial on the Yesod Wiki.Enlace a un archivo estático de Hamlet
Primero creó una aplicación yesod usando yesod init
, y creó un controlador de raíz que hace que un archivo widget de llamada homepage
:
getRootR = do
mu <- maybeAuth
defaultLayout $ do
h2id <- lift newIdent
setTitle "Home"
addWidget $(widgetFile "homepage")
Tengo un archivo de imagen en la llamada directorio estática static/img/logo.png
Después de tocar Settings/staticFiles.hs
, he conseguido con éxito para enlazar este archivo desde default-layout.hamlet
través
<img [email protected]{StaticR img_logo_png}
El problema se produce ahora que quiero incluir este archivo estático en mi widget homepage
, usando exactamente la misma línea de código. El siguiente error se produce durante la compilación:
Handler/Root.hs:19:21:
Not in scope: `img_logo_png'
In the result of the splice:
$(widgetFile "homepage")
To see what the splice expanded to, use -ddump-splices
In the first argument of `addWidget', namely
`$(widgetFile "homepage")'
In the expression: addWidget ($(widgetFile "homepage"))
Así que mi pregunta es: ¿Cómo se enlazan los recursos estáticos en los widgets definidos con widgetFile
, y por qué se comportan de manera diferente en la plantilla de diseño por defecto?