Reputation: 66594
I looked at a previous question that sounds like it’s the same question, but it seems to skip over a part that I must be missing.
I added the import Settings.StaticFiles
line at the top of the handler file.
I copied a file called chunk.png
into the static
folder of the yesod project.
However, no matter what I try, I always get:
Not in scope: 'chunk_png'
I’ve tried adding staticSite "static"
or $(staticSite "static")
before the whamlet, but to no avail.
Here’s the full code:
module Handler.Foo where
import Import
import Data.List
import Settings.StaticFiles
getFooR :: Int -> Int -> Handler Html
getFooR param1 param2 = do
staticSite "static"
defaultLayout [whamlet|
<img src=@{StaticR chunk_png}>
|]
I’ve also tried staticFiles "static"
(instead of staticSite
) but that gives me the error:
Not in scope: 'staticFiles' Perhaps you meant 'staticSite' (imported from Settings.StaticFiles)
There is an entry for /static StaticR Static getStatic
in config/routes
.
Any ideas?
Upvotes: 4
Views: 357
Reputation: 66594
The solution for me was to add
import Yesod.Static
at the top of the file, and
staticFiles "static"
before the handler function declaration, rather than inside of it.
Upvotes: 4