开发者

Trouble with $forall in hamlet template

开发者 https://www.devze.com 2023-04-05 03:48 出处:网络
I\'m having a strange issue with hamlet.I\'m trying to use $forall to iterate through a list, but I keep getting a \"Not in scope\" error.I\'m running yesod 0.9.2.2 on Win7.

I'm having a strange issue with hamlet. I'm trying to use $forall to iterate through a list, but I keep getting a "Not in scope" error. I'm running yesod 0.9.2.2 on Win7.

Terrible design aside, anyone have any idea where I'm going wrong? Removing the variable interpolation of "db" lets in execute fine.

The relevant hamlet:

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

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

The relevant handler code:

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
getDBSt开发者_JAVA技巧atusR = do
  mu <- maybeAuth
  defaultLayout $ do
    setTitle "DB Status Page"
    addWidget $(widgetFile "dbstatus")

I'm getting this error when running 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


Your indentation level in the template is wrong:

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

In your version the row is outside of $forall's scope.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号