Ссылка на статический css в Yesod 0.9.3.2

#yesod

#yesod

Вопрос:

Я следую вместе с учебным пособием по yesod на yesod wiki и натыкаюсь на ссылку на внешнюю структуру css (blueprint).

Я создал сайт с помощью инструмента scaffolding, и до сих пор все работало правильно, используя «yesod devel».

Я загрузил файлы чертежей в static/css/blueprint и добавил следующее в default-layout-wrapper.hamlet:

 !!!
<html>
    <head
        <title>#{pageTitle pc}
        <link rel=stylesheet type=text/css media=screen href=@{StaticR css_blueprint_screen_css}>
        <link rel=stylesheet type=text/css media=print href=@{StaticR css_blueprint_print_css}>
        ^{pageHead pc}
    <body
        ^{pageBody pc}
  

Ошибка, которую я получаю, это:

 Foundation.hs:98:27:
    Not in scope: `css_blueprint_screen_css'
    In the result of the splice:
      $(hamletFile "hamlet/default-layout-wrapper.hamlet")
    To see what the splice expanded to, use -ddump-splices
    In the first argument of `hamletToRepHtml', namely
      `$(hamletFile "hamlet/default-layout-wrapper.hamlet")'
    In the expression:
      hamletToRepHtml
        ($(hamletFile "hamlet/default-layout-wrapper.hamlet"))

Foundation.hs:98:27:
    Not in scope: `css_blueprint_print_css'
    In the result of the splice:
      $(hamletFile "hamlet/default-layout-wrapper.hamlet")
    To see what the splice expanded to, use -ddump-splices
    In the first argument of `hamletToRepHtml', namely
      `$(hamletFile "hamlet/default-layout-wrapper.hamlet")'
    In the expression:
      hamletToRepHtml
        ($(hamletFile "hamlet/default-layout-wrapper.hamlet"))
Starting development server...
  

Я нахожусь на Mac, запускаю ghc-7.0.3… Я думал, что понимаю, как работает StaticR, но я, очевидно, что-то упускаю. Есть идеи?

Заранее спасибо, Нил

Ответ №1:

Вам это нужно touch Settings/StaticFiles.hs ? В общем, yesod devel or yesod build обработает это для вас автоматически, но это первое, что приходит на ум.

Комментарии:

1. Это сработало, спасибо Майклу. Я не уверен, почему это не было обработано автоматически, но посмотрим, смогу ли я понять это, когда узнаю больше.

2. У меня такая же проблема, Майкл. Я помещаю свой файл main.css в папку static / css, но Yesod его не видит, и я получаю сообщение об ошибке: не в области видимости: ‘css_main_css’. Что я могу сделать?

3. @DenisShevchenko вы пробовали то, что предложил мой ответ, и touch Settings/StaticFiles.hs ?