Беда с $ forall в шаблоне хутора - PullRequest
       29

Беда с $ forall в шаблоне хутора

5 голосов
/ 16 сентября 2011

У меня странная проблема с деревушкой.Я пытаюсь использовать $ forall для перебора списка, но получаю сообщение об ошибке «Нет в области».Я запускаю yesod 0.9.2.2 на Win7.

Ужасный дизайн в стороне, кто-нибудь есть идеи, где я иду не так?Удаление переменной интерполяции «db» позволяет выполнить нормально.

Соответствующая деревня:

 !!!
<h1> Database List
<hr>
<table>

  <tr>
       <td> Host
       <td> Status
  $forall db <- dbList
  <tr>
       <td> #{host db}

Соответствующий код обработчика:

data Database = Database {dbType :: DBType,
                        host :: String,
                        user :: String,
                        password :: String
                       }


dbList = [Database Oracle "cpalmerws" "system" "***",
          Database Oracle "bdblnx" "system" "***",
          Database Postgres "localhost" "postgres" "***"]

getDBStatusR :: Handler RepHtml
getDBStatusR = do
  mu <- maybeAuth
  defaultLayout $ do
    setTitle "DB Status Page"
    addWidget $(widgetFile "dbstatus")

Я получаюэта ошибка при запуске yesod devel:

Handler\DBStatus.hs:47:17:
    Not in scope: `db'
    In the result of the splice:
      $(widgetFile "dbstatus")
    To see what the splice expanded to, use -ddump-splices
    In the first argument of `addWidget', namely
      `$(widgetFile "dbstatus")'
    In the expression: addWidget ($(widgetFile "dbstatus"))
Starting development server...

dist\devel.hs:3:1:
    Failed to load interface for `Application':
      it is not a module in the current program, or in any known package.
Exit code: ExitFailure 1

1 Ответ

8 голосов
/ 16 сентября 2011

Ваш уровень отступа в шаблоне неверен:

$forall db <- dbList
    <tr>
        <td>#{host db}

В вашей версии строка находится за пределами области действия $ forall.

...